0

私はJavaにかなり慣れていないので、受け取った入力が文字のみであることを確認するため、特殊文字や数字を入力できないようにするコードを作成しようとしています。

これまでのところ、私はここまで来ました

    System.out.println("Please enter your first name");
    while (!scanner.hasNext("a-z")
    {
    System.out.println("This is not in letters only");
    scanner.nextLine();
    }
    String firstname = scanner.nextLine();
       int a = firstname.charAt(0);

入力に文字 a ~ z のみを含めることができると定義しているだけなので、これは明らかに機能していません。

適切なコマンドを読んで自分で理解できる場所へのリンクさえあれば、どんな助けでもありがたいです:)

ありがとう

4

3 に答える 3

1

以下の2 つの方法のいずれかを使用できます。

public boolean isAlpha(String name) {
    char[] chars = name.toCharArray();

    for (char c : chars) {
        if(!Character.isLetter(c)) {
            return false;
        }
    }

    return true;
}

public boolean isAlpha(String name) {
    return name.matches("[a-zA-Z]+");
}
于 2013-10-20T10:26:08.880 に答える
0

You can use a simple regex for that

System.out.println("Please enter your first name");
String firstname = scanner.nextLine(); // Read the first name 
while (!firstname.matches("[a-zA-Z]+")) { // Check if it has anything other than alphabets
    System.out.println("This is not in letters only");
    firstname = scanner.nextLine(); // if not, ask the user to enter new first name
}
int a = firstname.charAt(0); // once done, use this as you wish
于 2013-10-20T10:23:05.103 に答える
0
while (scanner.hasNext()) {
    String word = scanner.next();
    for (int i = 0; i < word.length; i++) {
        if (!Character.isLetter(word.charAt(i))) {
            // do something
        }
    }
}
于 2013-10-20T10:25:10.997 に答える