名前、パスワードなど (すべての文字列) のユーザー入力にスペースがある場合に例外をスローする例外クラスを作成する必要があります。必要だと思ったすべてのコードを書きましたが、何を入力しても、常に例外がスローされます。
私は何を間違っていますか?
以下はコードのスニペットです。プログラム全体が必要な場合は、お知らせください。
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.