我正在尝试创建一个程序,该程序反复询问应该连续上升的水位,并且我的程序应该检测何时连续出现三个下降的读数。这是控制台上打印的内容:
现在的水位是多少(毫米):20
现在的水位是多少(毫米):21
现在的水位是多少(毫米):23
现在的水位是多少(毫米):25
现在的水位是多少(毫米):27
现在的水位是多少(毫米):27
现在的水位是多少(毫米):34
现在的水位是多少(毫米):22
现在的水位是多少(毫米):25
现在的水位是多少(毫米):26
现在的水位是多少(毫米):28
现在的水位是多少(毫米):27
现在的水位是多少(毫米):26
现在的水位是多少(毫米):25
看来洪水正在消退。
目前,我知道我应该循环它,但是我一直在使用python,所以我不确定如何继续使用java。如何存储问题的输入以便与之前的答案进行比较?任何帮助将不胜感激。
import java.util.Scanner;
public class waterLevelProgram {
public static void main(String[] args) {
double waterLevel, initialWaterLevel;
waterLevel = 0;
System.out.print("What is the water level at now (in mm): ");
initialWaterLevel = new Scanner(System.in).nextDouble();
while (waterLevel > 0){
System.out.println("What is the water level at now (in mm): ");
waterLevel = new Scanner(System.in).nextDouble();
if (waterLevel > initialWaterLevel){
}
}
}
}
最佳答案
这里的问题是您每次都将当前waaterLevel
与第一个水位(即initialWaterLevel
)进行比较,因此会得到意外的输出。您应该在循环结束时将initialWaterLevel
更新为当前级别,以便可以在下一个循环中将其与之进行比较。
public static void main(String[] args) {
double waterLevel, initialWaterLeve;
waterLevel = 0;
initialWaterLeve = 0;
int count=0;
Scanner sc = new Scanner(System.in);
while (waterLevel > 0){
System.out.println("What is the water level at now (in mm): ");
waterLevel = sc.nextDouble();
if (waterLevel < initialWaterLevel){
count++;
}
else{
count=0;
}
if(count>=3){
System.out.println("It appears that the flood is subsiding.");
break; // if you want to come out of loop.
}
initialWaterLevel = waterLevel;
}
}
不需要ArrayList或Queue,因为您的目标是检查是否连续发生了三个减少,这可以通过
int
变量轻松完成。 (记住这些技巧)