0

名前、パスワードなど (すべての文字列) のユーザー入力にスペースがある場合に例外をスローする例外クラスを作成する必要があります。必要だと思ったすべてのコードを書きましたが、何を入力しても、常に例外がスローされます。

私は何を間違っていますか?

以下はコードのスニペットです。プログラム全体が必要な場合は、お知らせください。

EmptyInputExceptionクラス:

public class EmptyInputException extends Exception{
public EmptyInputException(){
    super("ERROR: Spaces entered - try again.");
}
public EmptyInputException(String npr){
    super("ERROR: Spaces entered for " + npr + " - Please try again.");
}

}

ここでgetInput、例外をキャッチするメソッド:

 public void getInput() {
    boolean keepGoing = true;

    System.out.print("Enter Name: ");

    while (keepGoing) {

            if(name.equalsIgnoreCase("Admin")){
            System.exit(1);
            }else

        try {
            name = scanner.next();
            keepGoing = false;
            throw new EmptyInputException();

        } catch (EmptyInputException e) {
            System.out.println("ERROR: Please do not enter spaces.");
            keepGoing = true;
        }//end loop
    }
    System.out.print("Enter Room No.:");

    while (keepGoing) {
        if(room.equalsIgnoreCase("X123")){
            System.exit(1);
        }else
        try {
            room = scanner.next();
            if (room.contains(" ")){
                throw new EmptyInputException();
            }else
                keepGoing = false;

        } catch (EmptyInputException e) {
            System.out.println("ERROR: Please do not enter spaces.");
            keepGoing = true;
        }
    }

    System.out.print("Enter Password:");

    while (keepGoing) {
        if(pwd.equals("$maTrix%TwO$")){
            System.exit(1);
        }else
        try {
            pwd = scanner.next();
            keepGoing = false;
            throw new EmptyInputException();
        } catch (EmptyInputException e) {
            System.out.println("ERROR: Please do not enter spaces.");
            keepGoing = true;
        }
    }

}

次のように、スキャナー入力にスペースを含める必要がある部分が欠けているように感じます。

if(name.contains(" "))

等々...

これまでのところ、私の出力 (たとえば、名前を入力した後) は次のようになります。Error: Please do not put spaces.

4

2 に答える 2

1
try {
        name = scanner.next();
        keepGoing = false;
        if(name.contains(" "))
            throw new EmptyInputException();

    }

トリックを行う必要がありますか?

于 2015-04-08T19:13:33.467 に答える
0

あなたの推測は正しかった。

    try {
        name = scanner.next();
        keepGoing = false;
        throw new EmptyInputException(); // You're always going to throw an Exception here.

    } catch (EmptyInputException e) {
        System.out.println("ERROR: Please do not enter spaces.");
        keepGoing = true;
    }

たぶんうっかりミス。:D が必要if(name.contains(" "))パスワードブロックでも同じことが起こりました。

于 2015-04-08T19:10:51.880 に答える