gpt4 book ai didi

java - 在 Java 中编写 WHILE 循环来计算序列中的最大值,从而防止用户输入

转载 作者:行者123 更新时间:2023-12-01 19:52:32 24 4
gpt4 key购买 nike

我正在尝试通过阅读 Cay Horstmann 的《Big Java,Late Objects》来学习(自学)Java。我正在使用 repl.it 编写我的代码(如果您想查找它,它是公开的)

第4章循环的自检题是:当用户没有在第 4.7.5 节(标题为“最大值”和“最小值”)的算法中提供任何输入并且 WHILE 循环因此终止程序时,如何克服这个问题?

他们基本上要求重写代码以解决这个问题。

第4.7.5节的信息你需要解决这个问题:要计算序列中的最大值,保留一个变量来存储你遇到的最大元素,并在找到更大的元素时更新它。(该算法要求至少有一个输入。)

double largest = in.nextDouble();

while (in.hasNextDouble())
{
double input = in.nextDouble();
if (input > largest)
{
largest = input;
}
}

这就是这本书建议的这个问题的答案(但我不同意):一种解决方案是在循环中进行所有输入,并引入一个 boolean 变量来检查是否是第一次进入循环。

    double input = 0; 
boolean first = true;

while (in.hasNextDouble())
{
double previous = input;
input = in.nextDouble();
if (first) { first = false; }
else if (input == previous) { System.out.println("Duplicate input"); }
}

我不完全理解第一句话。我不同意将此作为问题的解决方案,因为(据我所知)它测试之前是否已输入输入,而不是测试是否提供了任何类型的用户输入..

我尝试将这两部分代码合并在一起,但似乎无法使其工作。或者更具体地说:弄清楚如何构建它。我需要什么变量/循环?我应该按什么顺序写这个?我已在 Visio 中制作了第一部分代码的流程图,但不知道如何继续。

这是我到目前为止所写的内容:

import java.util.Scanner;

class Main {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter the number: ");

double largest = 0;

while (input.hasNextDouble())
{
double value = input.nextDouble();
if (value > largest)
{
largest = value;
System.out.println("The largest input till now is: " + largest);
}
}

有人可以吗:

  1. 问我一些问题可以帮助我解决这个问题吗? IE。告诉我需要什么工具(WHILE、FOR 等)
  2. 以文本形式提供解决方案,我希望可以将其转换为代码
  3. 或者帮我写一下代码(我还没学过数组,所以请解决它)

提前致谢,

最佳答案

所以我在这方面做了一些工作,我认为我使用 do while 循环得到了与您正在寻找的东西很接近的东西。

此代码首先接受用户输入,然后检查其与上次输入相比的值,并返回“输入更高的值”、“找到重复的数字”,或者将最后输入的数字设置为当前数字。

我希望这可以帮助您将代码达到您想要的位置!我还是个新手,所以如果这没有完全优化,我深表歉意。

此外,我还没有添加退出循环的方法,因此您可能需要对每次迭代添加检查以查看用户是否愿意继续。

public static void main(String[] args) {

double userInput = 0;
double prevNum = 0;
boolean hasValue = false;
boolean exitCode = false;

do {
Scanner sc = new Scanner(System.in);
System.out.println("Please enter a number: ");
userInput = sc.nextDouble();

do {
if (userInput<prevNum) {
System.out.println("Please enter a number higher than " + prevNum);
hasValue=true;
}
else if (userInput==prevNum) {
System.out.println("Duplicate input detected.");
hasValue=true;
}
else {
prevNum = userInput;
hasValue = true;
}
}
while(hasValue==false);

System.out.println(prevNum);
System.out.println(userInput);

}
while(exitCode==false);
}

关于java - 在 Java 中编写 WHILE 循环来计算序列中的最大值,从而防止用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59074369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com