我是编程新手。我正在尝试从用户输入创建一个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;
}
答案 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;