2 つの問題があります。まず、コードの最初の部分である再試行の概念で、例外処理を作成しました。
do {
try {
if(exitType.length()==1){
char exitChar = exitType.charAt(0);
exit = exitChar;
if (exit == 'Y' || exit == 'y' || exit == 'N' || exit == 'n') {
x = 1;
} else {
throw new StringException("Invalid letter...\n");
}
} else {
throw new StringException("Invalid input a string...\n");
}
} catch(StringException i) {
System.out.println("-------------------------------------------");
System.out.print("You typed: " + exitType + i);
System.out.println("-------------------------------------------");
System.out.println("Try again? (y/n): ");
exitType = input.next();
x = 0;
}
ユーザーが y/n 以外の文字を入力した場合の出力は次のようになります。
Try again? (y/n): w
-------------------------------------------
You typed: wStringException: Invalid letter...
-------------------------------------------
最初の質問: StringException: Invalid letter... を次の行に配置して、'w' の横に置かないようにするにはどうすればよいですか (出力の明確さと簡潔さのため)。あなたが私を手に入れることを願っています。
ちなみに、私は独自の例外を作成しました:
public class StringException extends Exception {
public StringException(String message) {
super(message);
}
}
第二に、ユーザーが選択した文字を入力するように求められるこの部分に例外処理を追加する方法がわかりません。
public static void operation() {
Scanner input = new Scanner(System.in);
String choiceString = "";
char choice = 'a';
System.out.print("Enter letter of choice: ");
choiceString = input.next();
if (choiceString.length() == 1) {
choice = choiceString.charAt(0);
System.out.println("-------------------------------------------");
switch(choice) {
case 'a': {
try {
System.out.print("Enter width: ");
double width = input.nextDouble();
System.out.print("Enter height: ");
double height = input.nextDouble();
System.out.print("What is the color of the shape? ");
String color = input.next();
System.out.println("-------------------------------------------");
Shape cia;
Shape rec = new Rectangle(color, width, height);
cia = rec;
System.out.println(rec);
Rectangle r = new Rectangle(color, width, height);
r.print();
} catch(InputMismatchException i) {
System.out.println("InputMismatchException caught");
}
break;
}
case 'b': {
//****
}
case 'c': {
//****
}
default:
System.out.println("Invalid choice...");
}
} else {
System.out.println("Invalid input...");
}
try-catch ブロックをどこに配置すればよいかを知る必要があるのは、それが選択文字についてプロンプトを表示する部分だけです。