Java仅验证1和3之间的值

我试图只接受1和3之间的整数使用while循环和嵌套if语句在Java中。

超出此范围的任何内容都会产生错误消息

程序只能接受1到3之间的整数,任何文本或小数值的字符串也应该产生相同的错误信息并循环回原始打印语句(输入一个数字:)

下面的代码运行时没有任何编译器错误,虽然语句|| (a <1 || a> 3))将始终生成错误消息,无论该值如何。

如果我要删除这个语句,程序将运行并且只接受任何值的整数(当输入字符串或十进制值时出现错误消息)

任何人都可以帮助范围这个程序,只接受1和3之间的值,谢谢。

import java.util.Scanner;

公共类验证{公共静态无效的主要(字符串[]参数){

Scanner input = new Scanner(System.in);

int a = 0;

while (true) {
    System.out.print("enter a number: ");


    if (!input.hasNextInt() || !input.hasNext() || (a < 1 || a > 3)) {

        System.out.println("Oops! "); 

        input.nextLine();
    }


    else { 
        a = input.nextInt();
        break;
    }
}
input.close();
System.out.println("a = " + a);


}

}


请务必小心表达式的顺序。 如果你写的3个语句中的一个碰巧是真的,那么if花括号中的代码将被执行。 你可能想要这样的东西

if (!input.hasNextInt() || !input.hasNext()){
    if ((a > 1 || a < 3)){
        YourCode
    }
}

最大的问题是你需要记住最初你的整数“a”被设置为“0”。 这永远捕捉你的第一条件,即条件意味着从未设置!


你没有更新的价值a ,所以它的0所有的时间。

import java.util.Scanner;

public class Validate {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int a = 0;
        boolean loop = true;

        while (loop) {
            System.out.print("enter a number: ");

            if (!input.hasNextInt() || !input.hasNext()) {

                System.out.println("Oops! ");
                input.nextLine();
            } else {
                a = input.nextInt();
                if (a <= 3 && a >= 1)
                    loop = false;
                else {
                    System.out.println("Oops! ");
                    input.nextLine();
                }

            }
        }

        input.close();
        System.out.println("a = " + a);

    }
}

编辑:

链接地址: http://www.djcxy.com/p/68221.html

上一篇: Java validate only values between 1 and 3

下一篇: Java Inventory Program problems