2017-09-20 3 views
0

したがって、整数の入力検証をしようとしています。整数以外の文字もチェックすることができますが、これらの条件を両方ともループする方法がわかりません。たとえば、ユーザーが「a」を入力した場合は「-1」を入力し、もう一度「a」を入力します。ここで私のコードを理解してください。非負整数の検証Java

while (true) { 
    try { 
     n = Integer.parseInt(reader.nextLine()); 
     break; 
    } catch (NumberFormatException nfe) { 
     System.out.print("Try again: "); 
    } 
} 

while (n < 1) { 

    System.out.print("Enter a number greater than on equal to 1: "); 

    n = Integer.parseInt(reader.nextLine()); 
} 

答えて

0

あなたは、入力されたすべてのテストのための両方のことを確認する必要があります - 彼らは「AAA」(例外)、0(パスが、小さすぎる)を入力する場合は、「AAA」があなたの第二のループによってピックアップされていないものを。

while (true) { 
    try { 
     n = Integer.parseInt(reader.nextLine()); 
     if (n >= 1) break; 
     // Only gets here if n < 0; 
     System.out.print("Enter a number greater than on equal to 
    } catch (NumberFormatException nfe) { 
     System.out.print("Try again: "); 
    } 
} 
0

一つのループでそれを実行します。

for (;;) { // forever loop 
    try { 
     n = Integer.parseInt(reader.nextLine()); 
     if (n > 0) 
      break; // number is good 
     System.out.print("Enter a number greater than on equal to 1: "); 
    } catch (NumberFormatException nfe) { 
     System.out.print("Try again: "); 
    } 
} 

それとも、あなたは多くの検証ルールがある場合:

for (;;) { // forever loop 
    try { 
     n = Integer.parseInt(reader.nextLine()); 
    } catch (NumberFormatException nfe) { 
     System.out.print("Try again: "); 
     continue; 
    } 
    if (n < 1) { 
     System.out.print("Enter a number greater than on equal to 1: "); 
     continue; 
    } 
    if (n > 20) { 
     System.out.print("Enter a number less than on equal to 20: "); 
     continue; 
    } 
    if (n % 3 == 0) { 
     System.out.print("Enter a number that is not divisible by 3: "); 
     continue; 
    } 
    break; // number is good 
} 
0

をループがこれを処理するかに変更しながら、あなたがいずれかを使用する必要がありますwhileループdo

int n = 0; 
do { 
    try { 
     n = Integer.parseInt(reader.nextLine()); 
    } catch (NumberFormatException nfe) { 
     System.out.print("Try again: "); 
    } 
} while (n < 1);