无法循环,直到输入有效值

时间:2016-03-05 20:15:17

标签: java

我有以下代码

Public class MyClasses implements ForceValidation
{
      Public boolean validateValues(int a){
             If (a==0){
                 System.out.println("it is zero");
                 return false;
               }
              else
                    return true;
         }

   public static void main(String[] args){
            Scanner sc=new scanner(System.in);
            System.out.println("enter a number");
            int a=sc.nextInt();
            MyClasses m=new MyClasses();
            boolean b=true;
            while (b){
                   b=m.validateValues(a);
                   if(b){
                      System.out.println("valid value");
                      break;
                       }
             }
         }
}

虽然我得到了正确的输出,但在这里我想循环直到输入有效值

请建议解决方案

2 个答案:

答案 0 :(得分:1)

b应该是假的,直到给出了有效答案:

boolean b=false;
while (!b){
    b=m.validateValues(a);
    if(b){
        System.out.println("valid value");
        break;
    }
}

与以下内容相同:

boolean b=false;
while (!b){
    b=m.validateValues(a);
}
System.out.println("valid value");

答案 1 :(得分:1)

  

但是我想循环直到输入有效值

因为您希望在有效之前持续接收值。这是一个明显的提示,您需要在 循环中包含输入 的提示:

System.out.println("enter a number");  
int a=sc.nextInt(); 

while(!validateValue(a)){                   //so long value is invalid, repeat.
    System.out.println("enter a number");  
    a=sc.nextInt();                         //prompt for input
}
System.out.println("valid value");

但如果我是你,我将使用do-while循环,因此我们 必须 提示输入 两次

do{                   
    System.out.println("enter a number");  
    a=sc.nextInt();                         
}while(!validateValue(a));
System.out.println("valid value");