2017-01-28 11 views
0

ID入力を検証しようとしています。 IDが無効な場合は、ユーザーに再度入力するように指示する必要があります。しかし、IDが正しいときはうまくいくようです。無効な検証は私を無限ループにしますが、入力するとすぐに停止します。正しいIDを入力し直して正しいIDを入力し、正しいIDを入力したときにループを停止する方法

public class validate { 
    public static void main (String [] args) 
    { 
     Scanner in = new Scanner(System.in); 
     boolean valid_len; 
     int letter = 0; 
     int digit = 0; 
     int k = 0; 
     int num_id = 0; 
     char chars; 
     String temp_dog_id = ""; 
     System.out.print("Enter the Dog ID "); 
     temp_dog_id = in.nextLine(); 
     num_id = temp_dog_id.length(); 
     valid_len = (num_id >= 5) ? true : false; 

     String dog_id = temp_dog_id; 

     for (int i = 0; i< num_id; i++) 
     { 
      chars = temp_dog_id.charAt(i); 
      if (Character.isLetter(chars) && Character.isUpperCase(chars)) 
      { 
       letter = dog_id.indexOf(chars, 1); 
      } 
      if (Character.isDigit(chars)) 
      { 
       digit++; 
      } 
     } 
     while((num_id < 5 && valid_len)) 
     { 
      System.out.print("Enter the Dog ID "); 
      temp_dog_id = in.nextLine(); 
      System.out.println("Invalid. Enter the Id again. An example of ID of Dog would be eg. 1M434"); 
      k++; 
     } 
     if ((letter == 1) && valid_len) 
     { 
      System.out.println("Correct"); 
     } 
    } 
} 

答えて

0

while (true) { }ループを利用できます。最初に尋ねるような入力を求めるプロンプトを表示し、while(true)ループの内部で、IDが有効かどうかを確認するためにelseを使用します。 IDが有効な場合に実行されるifステートメントでは、break;と入力し、elseでSystem.out.println("Wrong ID, please enter it again: ");のような操作を行い、IDスキャンを再度上書きします。

  1. まずあなたはIDが有効である場合、プログラムはあなたが間違いを犯したについては何も教えてくれない、IDを求める:そのようなことをやって

    この結果を持っています。

  2. idが間違っていると、入力を求められます。入力した場合は最初に入力したように終了し、正しく入力します。

  3. それでも間違っている場合は、ポイント2の冒頭に記載されていることを行います。間違って入力するたびに、同じことが行われます。

+0

ありがとう!私は提案に感謝し、フラグの値を使用します。それは私をしばらく私を取ったが、私は今それを持っている:) –

+0

@ニコロビン問題は、それを固定聞いて幸せ! –

-1

まず、私はあなたがwhileループの中で暗示だと、== trueを指定する必要はないと思います。

第2に、これが何であるかを考えてください。一度間違ったIDを取得した場合は、それを修正してください。現時点では、それはちょうど終了します。

+0

ありがとうございます!私の注文は間違っていて、最後の部分を並べ替える考えもしました。それは今働いています:) –

関連する問題