每次我写Character.isLetter(4))
它突出显示isLetter ...

请帮忙。我正在尝试制作一个程序,您必须告知年龄才能继续,但如果输入字母,则会弹出错误。

这是我的完整代码,并且不起作用。

import java.util.Scanner;
public class Prmtrs1
{
public static int user_age2;
public static String user_age;
public static void main(String args[]) {

Scanner input = new Scanner(System.in);
Prmtrs2 POblect = new Prmtrs2 ();

System.out.println("Type in your name in here! ");
String name = input.nextLine();

POblect.Hello(name);
System.out.println("");
System.out.println("Enter your age,  " + name);
user_age = input.nextLine();
while(user_age.matches("\\d+")) {
    System.out.println("enter numbers from 0 to 9");
    user_age = input.nextLine();
}
System.out.println("Your age is  " + user_age + ", "  + name);
int user_age2 = Integer.parseInt(user_age);
if(user_age2 >= 18)
{
    System.out.println("So...");
System.out.println("You are eligible to Vote, " + name + "!");
}
else{
    System.out.println("So...");
System.out.println("You are not eligible to vote, " + name + "!");
}
}
}

最佳答案

您可能打算写Character.isLetter('4')'4'char,而4int

Character.isLetter需要一个charint codePoint。

您还应该考虑使用正则表达式并执行s.matches("\\d+")(其中s是输入字符串)以查看您的字符串是否仅由数字组成。 matches函数采用正则表达式。

在示例中,我仅显示\d表示“数字”,而+表示“一个或多个”。

但是,如果要使用Character.isLetter,可以这样进行:

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

10-04 10:53