user input check int only

*爱你&永不变心* 提交于 2019-12-02 02:22:37

You need to combine the two loops, so that both checks happen every time the end-user enters something new:

for(;;) {
    if(!sc.hasNextInt() ) { 
        System.out.println("only integers!: "); 
        sc.next(); // discard
        continue;
    } 
    choose=sc.nextInt();
    if( choose<=0 || choose>30)
    {
        System.out.print("no, 1-30: ");
        continue;
    }
    break;
}

After the loop exits, choose is a number between 1 and 30, inclusive.

do:
get number from user
if non integer format is entered{
number = -1;}
while: 1 < number < 30
    String choose = "";
    System.out.println("Test if input is an integer. Type 'quit' to exit.");
    System.out.print("Type an integer: ");
    Scanner sc=new Scanner(System.in);

    choose = sc.nextLine();

    while (!(choose.equalsIgnoreCase("quit"))) {
        int d = 0;
        try {
            d = Integer.parseInt(choose);

            if (!(d > 0 && d < 31)) {
                System.out.println("Being between 1-30");
            } else {
                System.out.println("Input is an integer.");
            }
        } catch (NumberFormatException nfe) {
            System.out.println("Enter only int");
        }

        System.out.print("Type an integer to test again or 'quit' to exit: ");
        sc = new Scanner(System.in);
        choose = sc.nextLine();
    }

    sc.close();
    System.out.print("Program ends.");

See dasblinkenlight's awnser with the NumberFormatException catch. I was thinking of doing that. This also works too:

You need to combine the two loops like so:

while(true) {
if(!sc.hasNextInt) {
System.out.println("Only Integers!");
continue;
}
choose = sc.nextInt();
if(choose <= 0) {
System.out.println("The number you entered was too small.");
continue;
} else if(choose > 30) {
System.out.println("The number you entered was too large.\nMax: 30");
continue;
}
break;
}
sc.close();
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!