输入/输出Java示例

输入/输出Java示例,java,input,collections,java.util.scanner,Java,Input,Collections,Java.util.scanner,我正在尝试创建一个程序,该程序反复要求水位不断上升,并且我的程序应该检测到连续三次下降的读数。以下是控制台上打印的内容: 现在的水位是多少(单位:mm):20 现在的水位是多少(单位:mm):21 现在的水位是多少(单位:mm):23 现在的水位是多少(单位:mm):25 现在的水位是多少(单位:mm):27 现在的水位是多少(单位:mm):27 现在的水位是多少(单位:mm):34 现在的水位是多少(单位:mm):22 现在的水位是多少(单位:mm):25 现在的水位是多少(单位:mm):26

我正在尝试创建一个程序,该程序反复要求水位不断上升,并且我的程序应该检测到连续三次下降的读数。以下是控制台上打印的内容:

现在的水位是多少(单位:mm):20
现在的水位是多少(单位:mm):21
现在的水位是多少(单位:mm):23
现在的水位是多少(单位:mm):25
现在的水位是多少(单位:mm):27
现在的水位是多少(单位:mm):27
现在的水位是多少(单位:mm):34
现在的水位是多少(单位:mm):22
现在的水位是多少(单位:mm):25
现在的水位是多少(单位:mm):26
现在的水位是多少(单位:mm):28
现在的水位是多少(单位:mm):27
现在的水位是多少(单位:mm):26
现在的水位是多少(单位:mm):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;
    }
}
publicstaticvoidmain(字符串[]args){
双水位,初始水位;
水位=0;
初始水位=0;
整数计数=0;
扫描仪sc=新的扫描仪(System.in);
而(水位>0){
System.out.println(“现在的水位是多少(单位:mm)”;
水位=sc.nextDouble();
if(水位<初始水位){
计数++;
}
否则{
计数=0;
}
如果(计数>=3){
System.out.println(“洪水似乎正在消退”);
break;//如果您想退出循环。
}
初始水位=水位;
}
}

不需要ArrayList或Queue,因为您的目标是检查一行中是否发生三次减少,这可以通过
int
变量轻松完成。(记住这些技巧)

关于如何使用ArrayList在程序中存储值的简单示例:

import java.util.Scanner;

public class waterLevelProgram {

    ArrayList<double> waterLevels = new ArrayList<double>();

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while (true){
            System.out.println("What is the water level at now (in mm): ");
            currentWaterLevel = scanner.nextDouble();
            waterLevels.add(currentWaterLevel);
            if (isFloodSubsiding())
                System.out.println("Flood is subsiding");
        }
    }

    public static boolean isFloodSubsiding(){
        if (waterLevels.size() >= 3)
        {
            return 
            (
           waterLevels.get(waterLevels.size()-1) < waterLevels.get(waterLevels.size()-2) 
        && waterLevels.get(waterLevels.size()-2) < waterLevels.get(waterLevels.size()-3)
            );
        }
        else 
            return false;
    }
}
import java.util.Scanner;
公营水位计画{
ArrayList水位=新建ArrayList();
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
while(true){
System.out.println(“现在的水位是多少(单位:mm)”;
当前水位=scanner.nextDouble();
水位。添加(当前水位);
if(isFloodSuffing())
System.out.println(“洪水正在下沉”);
}
}
公共静态布尔值正在下沉(){
如果(水位.size()>=3)
{
返回
(
waterLevels.get(waterLevels.size()-1)
但是正如@jack所说,如果你只需要在水位连续三次下降时处理一个警报,你就不需要存储。
如果您需要更复杂的操作(例如统计报告),这可能是如何使用ArrayList的一个技巧。

-如果您不需要存储所有读数,只需在队列中一次存储一些读数。与我们分享您在Python中的操作方法,以及如果您在转换为Java时遇到特定问题,我们可以提供帮助。@Joe C如果您非常了解如何将java翻译成python,请翻译接受的答案。为什么每次迭代都要创建一个新的扫描程序?谢谢!不得不将计数改为4,但除此之外,这就是我所缺少的!我忘了数数了!我认为如果条件不起作用,因为
水位
中的最后一个元素将是
当前水位
。解决了这个问题,但对我来说,问题是如何存储数据