我正在尝试创建一个程序,该程序反复询问应该连续上升的水位,并且我的程序应该检测何时连续出现三个下降的读数。这是控制台上打印的内容:

现在的水位是多少(毫米):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变量轻松完成。 (记住这些技巧)

09-30 18:38
查看更多