检查Java中的值是否大于零

时间:2016-04-02 07:39:39

标签: java boolean byte

让我开始说我是一个绝对的Java初学者,到目前为止我把它放在一起花了很多时间。

因此,考虑到这一点,我有我的代码片段,用于检查用户是否输入了字节值,如果没有,则会显示错误消息:

while (!keyboard.hasNextByte()) {
     keyboard.next();
     System.err.print("Error, try again: ");
 }

我想添加的另一个条件是检查用户是否输入了大于零的值。所以有这样的话:

 while (!keyboard.hasNextByte() && keyboard > 0) {

我该怎么做?我也很感激答案的解释,所以我可以通过这种方式学到更多。 TA

2 个答案:

答案 0 :(得分:0)

你的意思是,当没有有效字节 OR 等于零时,请求用户输入:

byte b;
while (!keyboard.hasNextByte() || (b=keyboard.nextByte()) <= 0) {
    System.err.print("Error, try again: ");
}

答案 1 :(得分:0)

你可以这样做:

    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()会更改!< / p>