1

FOR ループの先頭に再度ループバックさせるにはどうすればよいですか? 答えを探してみました。continue の使用は私にはうまくいかないようです。

try{

    for (int i = 0; i < Array1.length; i++){
        System.out.println("enter Values ");

        Scanner input = new Scanner(System.in);
        Array1[i]= input.nextInt();
    }
}//try
catch (InputMismatchException e) 
{
    System.out.println("pls enter integers only ");

}//catch

プロセスを再度続行するにはどうすればよいですか? 例えば

値を入力してください 5 値を入力してください 1 を入力してください 値を入力してください g pls は整数のみを入力してください ->> エラーの例外はここにあります

このエラーが表示された後、値 1 から再入力せずに値の入力プロセスを続行するにはどうすればよいですか?

4

6 に答える 6

3

for ループ内に try/catch を配置する必要があります (catch ブロックで i を減らすと、すべてのインデックスが埋められます)。

人々はここで基本について混乱しているように見えるので、フリックコード全体を持っていないのはなぜですか:

Scanner input = new Scanner(System.in);
System.out.println("Enter integer values: ");
for (int i = 0; i < Array1.length; i++){
    try {
        Array1[i]= input.nextInt();
    } catch (InputMismatchException e) {
        System.out.println("Please enter integers only");
        i--;
    }
}
// Now your Array1 is filled with ints
于 2013-10-18T05:49:36.957 に答える
1

例外が発生した場合にロールバックする方法を教えてください。for サイクル内に try/catch ステートメントを挿入できませんか?

Scanner input = null;

for (int i = 0; i < Array1.length; i++){
    System.out.println("enter Values ");

    input = new Scanner(System.in);
    try {
        Array1[i]= input.nextInt();
    } catch (InputMismatchException e) {
        System.out.println("pls enter integers only ");
    }
}

コード編集: 最適なプログラミングの使用法は、ループの外側で変数を宣言することです

于 2013-10-18T05:52:17.197 に答える
1

例外が発生すると、新たに開始されます。

    for(int i=0;i<a.length;i++){
        try{
            System.out.println("enter Values ");
            Scanner input = new Scanner(System.in);
            a[i]=input.nextInt();
        }
        catch(InputMismatchException e){
            System.out.println(e.getMessage());
            i=-1;
        }
    }

以下は、例外が発生した場所の値をフェッチしようとします:

for(int i=0;i<a.length;i++){
            try{
                System.out.println("enter Values ");
                Scanner input = new Scanner(System.in);
                a[i]=input.nextInt();
            }
            catch(InputMismatchException e){
                System.out.println(e.getMessage());
                i--;
            }
        }
于 2013-10-18T05:54:02.447 に答える
1

次のコードを使用してみてください。

try{
            for (int i = 0; i < Array1.length; i++){
                System.out.println("enter Values ");

                Scanner input = new Scanner(System.in);
                Array1[i]= input.nextInt();
                if(i==Array1.length-1) i=0;
            }
        }//try
        catch (InputMismatchException e) 
        {
            System.out.println("pls enter integers only ");

        }

一貫して同じループを実行します。これは、あなたの望むことですか?

于 2013-10-18T06:12:21.433 に答える
0

例外をキャッチしてプロセス全体をやり直したい場合は、

boolean isValid = false;

while(isValid == false) {
try{

    for (int i = 0; i < Array1.length; i++){
        System.out.println("enter Values ");
        Scanner input = new Scanner(System.in);
        Array1[i]= input.nextInt();
    }
    isValid = true;
}//try
catch (InputMismatchException e) 
{
    System.out.println("pls enter integers only ");

}//catch
}
于 2013-10-18T05:51:15.403 に答える
0
try{
for (int i = 0; i < Array1.length; i++){    
System.out.println("enter Values ");
Scanner input = new Scanner(System.in);    
    Array1[i]= input.nextInt();
}
} 
catch (InputMismatchException e) {System.out.println("pls enter integers only ");
i = 0;
continue;
}

それが役に立てば幸い。

于 2013-10-18T06:23:59.097 に答える