1

これは現在私のコードです。私がやりたいことは、配列で最大10個の数値を受け入れてから、それらの数値を表示することです。私がなんとかしたことは、エラーをキャッチしてからプログラムを停止することです。私がやりたいことは、ユーザーが整数を正しく入力するまでプログラムを実行し続けることです。y/n 文字列に対して同様のことを行うことができましたが、整数配列に対してそれを行う方法がわかりません。

public static void main(String[] args) {
    Scanner input = new Scanner (System.in);
    int i=0, numberlist[] = new int [10];
    String yn=null;

        while (i < 10)
    {
        try {
            System.out.print("Please enter your number\n");
            numberlist[i]=input.nextInt();
            System.out.print("Would you like to enter another number? (y/n)\n");
            yn=input.next();
            i++;
                        if (i==10)  
                            {System.out.println("You reached the maximum amount of numbers\n");
                            break;}

                        if (yn.equals("n"))
                            break;

                        else if (!yn.equals("y"))

                            while (true)
                                {System.out.print("Please only enter a 'y' for yes or 'n' for no next time.\nDo you understand? Type 'y' to continue\n");
                                yn=input.next();
                                    if (yn.equals("y"))
                                        break;
                                }


            }catch (Exception e){System.out.println("Please enter the correct number(integers only) next time.");}
}

    int max=numberlist[0], min=numberlist[0], numlength = i, sum=0;
    float average;

    for(i = 0; i < numlength; i++) {
        if(numberlist[i] > max)
            max = numberlist[i];            
    }

    for(i = 0; i < numlength; i++) {
        if(numberlist[i] < min)
            min = numberlist[i];
    }

    for(i = 0; i < numlength; i++) {
        sum=numberlist[i]+sum;
    }
    average = (float)sum/(float)numlength;

    System.out.println("Your Sum is: "+sum);
    System.out.println("Your Average is: "+average);
    System.out.println("Your Maximum is: "+max);
    System.out.println("Your Minimum is: "+min);
}
4

2 に答える 2

0

まず、例外をキャッチしないでください。関心があり、コードで発生する可能性があることがわかっている特定の例外のみをキャッチする必要があります。その他の例外は深刻な問題を示しており、それらをキャッチすることで、注意が必要なバグを示す重要な情報を誤って押しつぶしてしまう可能性があります。

そうは言っても、入力を読み取るコードのみをラップして try ブロックを小さくすることで、問題を解決できます。さらに、エラーが発生したかどうかを示すフラグをチェックするループを作成します。入力を整数に解析する際にエラーが発生した場合、catch ブロックでフラグを設定できます。

私の説明をコードに変換するのに問題がある場合は、詳細についてお気軽にお問い合わせください。

于 2013-07-15T23:13:37.497 に答える