Scannerクラスを使用し、try-catchブロックを使用してInputMismatchExceptionsを捕捉するプログラムを作成しています。この私が書いたものです:正しいときまで例外をキャッチする方法
public class StudentInfo{
public static void main(String[] args){
Scanner scnr = new Scanner(System.in);
int creditHours = 0;
try
{
System.out.println("Please enter the number of credit hours that you currently have (do not count credit hours from classes that you are currently attending this semester)");
creditHours = scnr.nextInt();
}
catch(InputMismatchException e){
System.out.println("CLASSIFICATION ERROR: NUMBER NOT RECOGNIZED. ENTER AN INTEGER FOR CREDIT HOURS");
Scanner input = new Scanner(System.in);
creditHours = input.nextInt();
}
String studentClass = checkStudent (creditHours);
System.out.println("Official Student Classification: " + studentClass);
}
try-catchブロックは、私は例えば24.5に最初の頃を置けば、それは例外をキャッチし、ユーザーが数を再入力している、のように約1時間の作品彼らが持っていたクレジット時間ですが、2回目に非整数を再入力すると、エラーを再び捕らえて適切なメッセージを送信できません。だから本質的に、何度も何度も例外をキャッチしてエラーメッセージを出す方法があれば、私は思っていました。 do-whileループやwhileステートメントを使ってみましたが、うまくいきません。また、キャッチブロックに新しいスキャナ変数を作成しました。なぜなら、何らかの理由でエラーメッセージを出した後に新しい整数を入力できないからです。それは文字どおり入力したエラーをスローし、JavaのInputMismatchExceptionエラーを出すように進みます。
はここでwhileループを使用しての私の試みです:
int creditHours = 0;
while(creditHours <= 0){
try
{
System.out.println("Please enter the number of credit hours that you currently have (do not count credit hours from classes that you are currently attending this semester)");
creditHours = scnr.nextInt();
}
catch(InputMismatchException e){
System.out.println("CLASSIFICATION ERROR: NUMBER NOT RECOGNIZED. ENTER AN INTEGER FOR CREDIT HOURS");
Scanner input = new Scanner(System.in);
creditHours = input.nextInt();
}
}
String studentClass = checkStudent (creditHours);
System.out.println("Official Student Classification: " + studentClass);
}
のtry/catchがループではありません。ループ動作が必要な場合は、ループを追加する必要があります。例えばwhile(1){try ... catch ...} ' –
@MarcB私は私の質問で言ったように、私はすでにしばらくの間ループを行い、どちらもうまくいきませんでした。まったく同じことです。 – user2161312
だから、ループの試行を見せてください。 –