输入验证的布尔逻辑
Boolean logic for input validation
我有一种方法会继续循环,直到用户输入设定范围内的数字。基本上它读取 arraylist 上的大小,并验证用户输入是否大于 -1 且小于 arraylist 大小。但是,我似乎无法正确理解布尔逻辑,它仍然接受错误的数字或只有范围的一侧有效。这是代码
public void Verify()
{
do {
System.out.printf("Enter the number\n");
while (!input.hasNextInt())
{
System.out.printf("Enter the number\n");
input.next();
}
choice = input.nextInt();
} while (choice < 0 && choice > mov.getArrayListSize());//<--- this part
}
问题来了
while (choice < 0 && choice > mov.getArrayListSize());
这句话的意思是:一直循环直到 choice 的值既小于零又同时大于数组的大小。让我们看一些数字行:
xxxxxxxxxx
----------+---------+------------> ... this shows a solution for choice < 0
0 len
xxxxxxxxxxxx
----------+---------+------------> ... this shows a solution for choice > len
0 len
----------+---------+------------> ... this shows a solution for the logical AND
0 len
没有可能既小于零又大于数组长度的选择解。您几乎肯定要使用的是逻辑或,而不是与:
while (choice < 0 || choice > mov.getArrayListSize());
数轴上的解是
xxxxxxxxxx xxxxxxxxxxxx
----------+---------+------------> ... this shows a solution for choice > len
0 len
循环将继续,直到值落入 0-len 范围内,这似乎是您在这里需要的。
我有一种方法会继续循环,直到用户输入设定范围内的数字。基本上它读取 arraylist 上的大小,并验证用户输入是否大于 -1 且小于 arraylist 大小。但是,我似乎无法正确理解布尔逻辑,它仍然接受错误的数字或只有范围的一侧有效。这是代码
public void Verify()
{
do {
System.out.printf("Enter the number\n");
while (!input.hasNextInt())
{
System.out.printf("Enter the number\n");
input.next();
}
choice = input.nextInt();
} while (choice < 0 && choice > mov.getArrayListSize());//<--- this part
}
问题来了
while (choice < 0 && choice > mov.getArrayListSize());
这句话的意思是:一直循环直到 choice 的值既小于零又同时大于数组的大小。让我们看一些数字行:
xxxxxxxxxx
----------+---------+------------> ... this shows a solution for choice < 0
0 len
xxxxxxxxxxxx
----------+---------+------------> ... this shows a solution for choice > len
0 len
----------+---------+------------> ... this shows a solution for the logical AND
0 len
没有可能既小于零又大于数组长度的选择解。您几乎肯定要使用的是逻辑或,而不是与:
while (choice < 0 || choice > mov.getArrayListSize());
数轴上的解是
xxxxxxxxxx xxxxxxxxxxxx
----------+---------+------------> ... this shows a solution for choice > len
0 len
循环将继续,直到值落入 0-len 范围内,这似乎是您在这里需要的。