私は00000から99999までの5桁の郵便番号を入力するプログラムを作成しようとしていますが、ユーザーがその範囲または数値以外の数値から数字を入力すると、ユーザーに5つの数値を入力するまで試行し続ける機会を与えます。JAVA:例外処理に関する問題?プログラムは例外を一度だけキャッチします
私のプログラムはそれの最初のインスタンスをキャッチしているように見えますが、その後、要件に合わない場合でもユーザーが入力した2番目のものを単に出力します。
私はちょうど困惑していましたが、コードでwhileループを使用する方法がわかりませんが、おそらく私が必要と思われるものは何ですか?
私はこれで初心者であり、どんな助けもありがとう!
import java.util.InputMismatchException;
import java.util.Scanner;
public class xzip_code {
public static void main(String[] args)
{
try
{
Bounds(Program());
}
catch(IllegalArgumentException ex)
{
System.out.println("Enter 5 Digits");
Program();
}
catch(InputMismatchException ex)
{
System.out.println("Enter Numbers");
Program();
}
}
public static void Bounds(String answer)
{
int length = answer.length();
if(length<5 || length>5)
{
throw new IllegalArgumentException("Enter 5 Digits");
}
char a = answer.charAt(0);
char b = answer.charAt(1);
char c = answer.charAt(2);
char d = answer.charAt(3);
char e = answer.charAt(4);
int f = a;
int g = b;
int h = c;
int i = d;
int j = e;
if(f>58 || g>58 || h>58|| i>58||j>58)
{
throw new InputMismatchException("Enter Numbers");
}
}
public static String Program()
{
Scanner userInput = new Scanner(System.in);
String x = userInput.next();
System.out.println(x);
return x;
}
}
そして、ユーザが第2のエラーを犯したならば、プログラムが例外で終了します 正しいコードを参照してください。有効な番号が入力されるまでループするようにプログラムを再構成する必要があります。他にも問題があります(なぜ、> 58でしょうか?)。 –
@ジムガリソン、指摘してくれてありがとう。私は最初にコードを通過しなかった。私はコードを更新しました。 –