0

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 ブロックをどこに配置すればよいかを知る必要があるのは、それが選択文字についてプロンプトを表示する部分だけです。

4

2 に答える 2

0

最初の質問: StringException: Invalid letter... を次の行に配置して、「w」の横に置かないようにするにはどうすればよいですか?

変化する

System.out.println("You typed: " + exitType);
System.out.println(" ");
System.out.println(i);

System.out.println("You typed: " + exitType + i);

println引数にあるものを出力した後に改行を追加します (これは とは異なりますprint)

第二に、ユーザーが選択した文字を入力するように求められるこの部分に例外処理を追加する方法がわかりません。

ケースに追加するdefaultか、より良いのはelse

else {
        throw new ...
    }
于 2013-01-11T13:24:46.473 に答える
0

最初の質問:あなたのキャッチには

System.out.print("You typed: " + exitType + i);

に変更するだけ

System.out.print("You typed: " + exitType + "\n" + i);

\n改行として機能するエスケープコードです。完全を期すために、実際に\n\rはシステムの互換性のために使用する必要があります

2 番目の質問がよくわかりませんでしtry/catchchoiceString = input.next();。また、例外をキャッチした後の例外の管理方法によっても異なります。

于 2013-01-11T13:26:38.270 に答える