2016-10-26 7 views
2

私はプログラミングが新しくなっています。私はユーザー入力変数の境界を設定する方法を探しています。ここに私のコードの一部ですユーザー入力境界 - Java

public static void main(String[] agrs){ 

    Scanner user_input = new Scanner(System.in); 

    String angle; 
    System.out.println("Angle:"); 
    angle = user_input.next(); 

例えば、私は可能な入力を30度から60度の間にしたいと思います。以下のような

+1

'if-else'ブロックについては、基本的なJavaチュートリアルを参照してください。 – QBrute

+0

Javaをもっと学ぶと、実行しようとしている関数に対して期待される入力が正しくないことを示すためにここに例外を投げたい場合があることを学びます – ControlAltDel

+0

これはインタラクティブなプログラムのように見え、例外をスローすると、ユーザー体験。代わりに、ユーザーが終了せずに有効な入力を提供するように案内するエラーメッセージを表示することもできます。 –

答えて

0

何か:validateAngle方法は、カスタム検証ロジックを持っている

int angle = user_input.nextInt(); 
validateAngle(angle); 

Scannerは入力がintであることを確認します(そうでない場合は例外がスローされます)が、追加の制約を自分で指定する必要があります。

次ループ有効角度が提供されるまで:

Scanner userInput = new Scanner(System.in); 
    int angle = 0; 
    while (invalidAngle(angle)) { 
     angle = userInput.nextInt(); 
    } 
+1

検証が失敗したら、何を? – ControlAltDel

+0

それはOPへの質問です。おそらくあなたは質問にコメントとして追加したいと思っています。 –

1

使用検証するコンストラクト次いで/ IFここで、このような

if(angle < 30 && angle > 60) { 
    System.out.println("invalid input") 
} else { 
    doSomethingMeaningful(); 
} 
+0

または、印刷するのではなく、IllegalArgumentExceptionをスローします。おそらくOPの頭を越えて – ControlAltDel

1

を入力条件をチェックするブロックが用いた例である場合ユーザーエントリ:

public class LargestAndSmallest { 

    public static void main(String... args) { 
    final Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter a number"); 
    final Set<Integer> ints = new HashSet<>(); 
    int n; 
    while ((n = keyboard.nextInt()) != -99) { 
     if (valid(n)) { 
     ints.add(n); 
     } 
     System.out.println("Enter more numbers, or -99 to quit."); 
    } 
    System.out.println("the largest is " + Collections.min(ints)); 
    System.out.println("the smallest is " + Collections.max(ints)); 
    } 

    // Validation happens here 
    private static boolean valid(final int n) { 
    if (n < 0) { 
     System.out.println("Negative numbers (other than -99) are not allowed."); 
     return false; 
    } else if (n > Short.MAX_VALUE) { 
     System.out.println("Your entry is too large."); 
     return false; 
    } else { 
     return true; 
    } 
    } 
} 
関連する問題