1

我无法使用公共方法检查 az 和 AZ 等非字符串值

Scanner input = new Scanner(System.in);
System.out.print("Enter your First Name: ");
String First_name = input.nextLine();


Scanner last = new Scanner(System.in);
System.out.print("Enter your Last Name: ");
String Last_name = last.nextLine();

这是公共方法

public static boolean check_non_string_value (String First_name, String Last_name){
  // dont know how to check the input here
} 
4

2 回答 2

3

您可以使用正则表达式,但自己循环每个字符串并使用它Character.isLetter()来检查每个字符也相对简单:

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

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

return true;

请注意,我使用了更传统的名称:firstNamelastName. 您应该始终尝试遵循 Java 的命名约定(即使用camelCase)。您的方法名称也应该是checkNonStringValue.

使用正则表达式,您可以执行以下操作:

private static final Pattern letters = Pattern.compile("\\p{Alpha}+");

...
    return letters.matcher(firstName).matches() &&
           letters.matcher(lastName).matches();

\p{Alpha}是预定义的字符类含义[a-zA-Z]。有关Pattern更多详细信息,请参阅。

于 2013-10-09T13:39:33.480 回答
1

此方法对 az 和 AZ 字符有效

public static boolean check_non_string_value (String First_name, String Last_name){
   if(First_name.matches("[a-zA-Z]+")&&Last_name.matches("[a-zA-Z]+")){
          system.out.println("Valid input");
        return true;
   }
   return false;
}  

此方法对所有单词字符都有效

public static boolean check_non_string_value (String First_name, String Last_name){
   if(First_name.matches("\\w")&&Last_name.matches("\\w")){
          system.out.println("Valid input");
        return true;
   }
   return false;
}  
于 2013-10-09T13:40:35.360 回答