检查 Java 中的值是否大于零
Check if value is greater than zero in Java
让我开始说我是 Java 的 绝对初学者,到目前为止我整理的内容花了我很长时间。
考虑到这一点,我有这段代码可以检查用户是否输入了字节值,如果没有则显示错误消息:
while (!keyboard.hasNextByte()) {
keyboard.next();
System.err.print("Error, try again: ");
}
我想添加的是另一个条件,它检查用户是否输入了大于零的值。所以沿着这些方向:
while (!keyboard.hasNextByte() && keyboard > 0) {
我该怎么做?我也很感激对答案的解释,这样我就可以通过这种方式了解更多信息。塔
你真正的意思是当没有有效字节 OR 等于零时,要求用户输入:
byte b;
while (!keyboard.hasNextByte() || (b=keyboard.nextByte()) <= 0) {
System.err.print("Error, try again: ");
}
你可以这样做:
byte savedInput;
boolean savedHasNextByte;
while (!(savedHasNextByte = keyboard.hasNextByte()) || (savedInput = keyboard.nextByte()) <= 0) {
if (!savedHasNextByte) keyboard.next();
System.err.print("Error, try again: ");
}
然后在 savedInput
中获取你的值。
说明
Java中的||
运算符短路。所以:
如果!keyboard.hasNextByte()
(输入不是一个字节)则不计算第二部分,它打印错误,忽略输入,并再次输入。
如果 !keyboard.hasNextByte()
为假(输入是一个字节),则将输入 keyboard.nextByte()
保存到 savedInput
并检查它是否大于 0。
如果不是,那么你也忽略它,否则你在 savedInput
中输入(不在 keyboard.nextByte()
中,因为你已经调用过一次!)
但是,如果 ||
不是短路,那么 keyboard.nextByte()
将被评估,而不考虑 keyboard.hasNextByte()
,这可能会导致错误。
编辑: 我们必须保存 hasNextByte()
因为如果 keyboard.hasNextByte()
那么键盘将被 keyboard.nextByte()
读取,而 hasNextByte()
会变的!
让我开始说我是 Java 的 绝对初学者,到目前为止我整理的内容花了我很长时间。
考虑到这一点,我有这段代码可以检查用户是否输入了字节值,如果没有则显示错误消息:
while (!keyboard.hasNextByte()) {
keyboard.next();
System.err.print("Error, try again: ");
}
我想添加的是另一个条件,它检查用户是否输入了大于零的值。所以沿着这些方向:
while (!keyboard.hasNextByte() && keyboard > 0) {
我该怎么做?我也很感激对答案的解释,这样我就可以通过这种方式了解更多信息。塔
你真正的意思是当没有有效字节 OR 等于零时,要求用户输入:
byte b;
while (!keyboard.hasNextByte() || (b=keyboard.nextByte()) <= 0) {
System.err.print("Error, try again: ");
}
你可以这样做:
byte savedInput;
boolean savedHasNextByte;
while (!(savedHasNextByte = keyboard.hasNextByte()) || (savedInput = keyboard.nextByte()) <= 0) {
if (!savedHasNextByte) keyboard.next();
System.err.print("Error, try again: ");
}
然后在 savedInput
中获取你的值。
说明
Java中的||
运算符短路。所以:
如果!keyboard.hasNextByte()
(输入不是一个字节)则不计算第二部分,它打印错误,忽略输入,并再次输入。
如果 !keyboard.hasNextByte()
为假(输入是一个字节),则将输入 keyboard.nextByte()
保存到 savedInput
并检查它是否大于 0。
如果不是,那么你也忽略它,否则你在 savedInput
中输入(不在 keyboard.nextByte()
中,因为你已经调用过一次!)
但是,如果 ||
不是短路,那么 keyboard.nextByte()
将被评估,而不考虑 keyboard.hasNextByte()
,这可能会导致错误。
编辑: 我们必须保存 hasNextByte()
因为如果 keyboard.hasNextByte()
那么键盘将被 keyboard.nextByte()
读取,而 hasNextByte()
会变的!