有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

来自用户输入的带有验证的java数组列表

我是编程新手。我正在尝试从用户输入创建ArrayList。我需要验证用户没有输入负数,提示用户正确输入,并继续接受输入。一旦我接受了所有输入,输入的数字总数。 只要用户不输入连续的负数,我就可以让输入和验证生效。如果用户输入连续的负数,它将不再抛出验证错误,并从总数中减去输入的负数。 我试着用do,if,while和所有我能想到的方法重写这篇文章,但最终只会让它变得更糟。提前感谢您的帮助

public static ArrayList<Double> readInputs()
{
ArrayList<Double> inputs = new ArrayList<>();
System.out.println("Please enter CU or Type q and Enter to Total.");          
Scanner in = new Scanner(System.in);
while (in.hasNextDouble())
{
double value = in.nextDouble();
if (value < 0)
{
System.out.println("Error: Can not be a Negative Value");
System.out.println("Please enter CU or Type q and Enter to Total.");
value = in.nextDouble();
}
inputs.add(value);
}
return inputs;
}  

共 (2) 个答案

  1. # 1 楼答案

    将if(值<;0)更改为while(值<;0)

    基本上,如果用户输入负数,它会一直要求输入

        ArrayList<Double> inputs = new ArrayList<>();
        System.out.println("Please enter CU or Type q and Enter to Total.");
        Scanner in = new Scanner(System.in);
        while (in.hasNextDouble()) {
            double value = in.nextDouble();
            while (value < 0) {
                System.out.println("Error: Can not be a Negative Value");
                System.out.println("Please enter CU or Type q and Enter to Total.");
                value = in.nextDouble();
            }
            inputs.add(value);
        }
        return inputs;
    
  2. # 2 楼答案

    添加continue语句,而不是读取if块中的下一个值

    if (value < 0)
    {
        System.out.println("Error: Can not be a Negative Value");
        System.out.println("Please enter CU or Type q and Enter to Total.");
        //value = in.nextDouble();
        continue;
    }
    

    这样,所有输入都会进行验证

    一个continue语句将结束当前迭代,并开始下一个迭代