- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过阅读 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);
}
}
有人可以吗:
提前致谢,
最佳答案
所以我在这方面做了一些工作,我认为我使用 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/
我是一名优秀的程序员,十分优秀!