0

私はJavaが初めてです

int nop=o;
BufferedReader scan = new BufferedReader( new InputStreamReader(System.in));
come_here:
System.out.println("Enter length");
try{
    int n=Integer.parseInt(scan.readLine());
nop=n;
}catch(Exception sandy){
    System.out.println("Please Enter Numericals only");
    continue come_here;
}

come here:ユーザーが数値の代わりに任意の文字列を入力すると、例外が発生して「数値のみを入力してください」と出力され、コンパイラが次のステートメントを実行します。ここでは、ラベル ( )を使用したことを克服するためにユーザー入力が失われています。 「その後、プログラムにユーザー入力を再度取得させたいので、続行を使用しましcome_here; たが、機能しませんか?

誰が私がどこで間違いを犯したか教えてくれますか? そしてそれを解決する方法

ありがとうございました

4

5 に答える 5

1

これは有効な Java ではありません。代わりに、次のようにコードを記述します。

    int nop = 0;
    BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
    for (;;) {
        System.out.println("Enter length");
        try {
            int n = Integer.parseInt(scan.readLine());
            nop = n;
            break;
        } catch (Exception sandy) {
            System.out.println("Please Enter Numericals only");
        }
    }
于 2013-01-05T16:58:13.510 に答える
0

ここで使用を続けるを参照してください、使用法はあなたが学んだものとは異なります

次のコードを使用して整数値を読み取ることができます

int nop=o;
BufferedReader scan = new BufferedReader( new InputStreamReader(System.in));
for(;;) {
        System.out.println("Enter length");
        try{
        int n=Integer.parseInt(scan.readLine());
        nop=n;
break;
            }catch(Exception sandy){
                System.out.println("Please Enter Numericals only");
            }
    }
于 2013-01-05T16:53:51.050 に答える
0

これがこの問題を解決する最適な方法だと言っているわけではありませんが、おそらくこのようなものを探しているでしょう。goto-ステートメントをwhile(true)ループに置き換えました。while整数が正常に解析されると、ループは終了します。

int nop=0;
BufferedReader scan = new BufferedReader( new InputStreamReader(System.in));
while (true) {
    System.out.println("Enter length");
    try {
        int n=Integer.parseInt(scan.readLine());
        nop=n;
        break;
    } catch(Exception sandy){
        System.out.println("Please Enter Numericals only");
    }
}
于 2013-01-05T16:58:11.793 に答える
0

ユーザー入力ループを実行しようとしていますが、トリックはJavaがgoto実際に使用することを許可していないことです.これは予約語ですが、コンパイルされません.

より簡単な手順でできることは次のとおりです。

  • 渡された InputStreamでScannerオブジェクトを初期化するSystem.in
  • do...whileループ を使用します。
    • ユーザーに入力を求める
    • を使用して解析してみてくださいInteger.parseInt()
    • ドル記号を入力した場合に発生する例外をキャッチします
    • 有効な入力が何であるかを言うよう促します
    • ...有効な入力がありません。
于 2013-01-05T16:58:15.143 に答える
0

ラベルは、Java では Basic や C/C++ などの他の言語と同じ機能を持っていません。

それらはループをマークし、ジャンプできるコマンドではありません。通常、ネストされたループがある場合にのみ必要です。このような:

    loop_i: for (int i = 0; i < 10; i++) {
        loop_j: for (int j = 0; j < 10; j++) {
            System.out.println(i + " " + j);
            if (j == 7) {
                // we want to jump out of the inner loop
                break loop_j; // or just break;
            }
            if (i == 3 && j == 4) {
                // now we want to jump out of both loops
                break loop_i;
            }
        }
    }

この例では、説明しやすいので break を使用しています。ただし、ラベルの問題については同じルールを引き続き使用してください。

于 2013-01-05T17:19:27.723 に答える