所以我试图制作一个只接受正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();
}
答案 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);
希望这有帮助。