如何使用循环来排除负int?

时间:2017-02-09 03:53:33

标签: java

所以我试图制作一个只接受正int值的程序。

我插入的while循环成功循环,如果我输入非int,直到我输入有效的int。

但是,我在做同样的事情时遇到了麻烦,只能接受积极的注意。当我输入一个非整数时,它成功地再次询问我,但是当我输入一个neg int时,似乎它会跳过if语句并继续执行该程序。这是为什么?

关于如何让它循环直到我放入正int的任何提示?

while(!scnr.hasNextInt()){

            System.out.print("Please enter an integer value as decimal digits: ");
            if(dmCyl < 0){
                System.out.print("Please enter a positive integer value: ");
            }
            scnr.next();
            }

        dmCyl = scnr.nextInt();

我也尝试过无效,使用类似的while循环在下面和外面使用非ints说

while(dmCyl < 0){

     System.out.print("Please input positive integer: ");

     scnr.next();
}

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

    System.out.println("Enter a positive integer: ");
    Scanner sc = new Scanner(System.in);
    String input = sc.nextLine(); //take the input in string format
    boolean valid=false;
    boolean test=true;
    int testnumber=0;

    while(valid==false)
    {
        /*Check for non-integers*/
        try
        {
            testnumber=Integer.parseInt(input); //this can take any value
        }
        catch(NumberFormatException ex){ //to check if the input is an integer or not
            System.out.println("Please enter a number: ");
            input = sc.nextLine();
            valid=false; //still cant get out of the while loop
            test=false; //this will always be false in case of non-integers
        }
        /*Check for positive integers*/
        if(test==true)//integer has been entered
        {
            if(testnumber<0)
            {
                System.out.println("please enter a positive integer: ");
                input = sc.nextLine();
            }
            else
            {
                valid =true; //positive integer entered, get out of the while loop
            }
        }
        test=true;
    }
    System.out.println("You entered: "+testnumber);

这个程序有两个部分,一个检查输入是否确实是一个整数,一旦满足这个条件,它就会检查数字是否为负数。既然您已经可以检查输入是否为整数,并且您只想查看该数字是否为负数,那么您可以使用:

    System.out.println("Enter a positive integer: ");
    Scanner sc = new Scanner(System.in);
    int input = sc.nextInt(); //take the input in string format
    while(input<0)
    {
        System.out.println("Enter a positive integer: ");
        input=sc.nextInt();
    }
    System.out.println("you entered: "+input);

希望这有帮助。