具有验证的用户输入的数组列表

时间:2014-01-15 05:33:13

标签: java validation arraylist

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

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 个答案:

答案 0 :(得分: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语句将结束当前迭代并开始下一次迭代。

答案 1 :(得分:0)

将if(value&lt; 0)更改为while(值&lt; 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;