合并hasNextInt并且值大于/小于X检查

时间:2016-04-06 10:43:31

标签: java

使用以下方法:

public void localsetValue(String UserInput) 
{
    System.out.println("Enter New Value:");
    while (!console.hasNextInt()){
            console.next();
            System.out.println("Must be a number.");
        }
        tempInt = console.nextInt();
        console.nextLine();



    while (tempInt <0) { 
        System.out.println("Value must be positive.");
        tempInt = console.nextInt();
    }
    SetSpecificValue(UserInput.toLowerCase(), tempInt);
}

第一个while循环检查用户是否输入了有效的int;这很好。

第二个while循环检查用户输入正数;这也有效,但此时他们可以输入一个字母,它会抛出异常。

还是Java的新手,有没有办法将这两个检查结合起来?

3 个答案:

答案 0 :(得分:3)

只需使用相同的while循环就可以了。

此处,如果用户输入int以外的其他内容,或者输入的int为否定,我们会继续循环播放。

int tmpInt = 0;
boolean flag = false;
while ((flag = !console.hasNextInt()) || (tmpInt = console.nextInt()) < 0){
    if (flag) {
        console.next();
        flag = false;
    }
    System.out.println("Value must be a positive integer !");
}

答案 1 :(得分:1)

你只需要一个循环,但必须结合两个中止条件(是一个数字,是正数)。

int value = -1
do {
   if(console.hasNextInt()){
      value = console.nextInt();
   } else {
      console.next();
   } 
} while(value < 0)

答案 2 :(得分:0)

这样的东西?

public void localsetValue(String UserInput) 
{
    tempInt = -1;
    System.out.println("Enter New Value:");
    while (!console.hasNextInt() || (tempInt = console.nextInt()) <0){
            console.next();
            System.out.println("Must be a positive number.");
        }     
        console.nextLine();
    SetSpecificValue(UserInput.toLowerCase(), tempInt);
}