输入字符和数字 java,验证输入仅为字符串,数字仅为JAVA

本问题已经有最佳答案,请猛点这里访问。

我是一名学生,在验证输入方面有点问题。

String name;

System.out.println("Enter name:");

name = keyboard.nextLine();

//If name contain other than alphabetical character print an error

double number;

System.out.println("Enter number:");

name = keyboard.nextDouble();

//If number contain other than number print an error

我尝试的是将字符串解析为double的测试,但我做不到。我不知道如何测试double是否是唯一的数字。

请告诉我该怎么做。

名称使用regex [A-Za-z],数字使用\\d。但您不认为名称可以包含除字母字符之外的其他字符吗,例如空格?

@Christopher不是一个副本,因为它要求同时验证数字和非数字输入。但显然关系重大。

顺便说一下,我投了反对票。这个话题已经在这个网站上讨论了很多次,你应该能够通过一些先前的研究找到答案。

可以使用正则表达式检查输入是否与约束匹配,如下所示:

String name;

System.out.println("Enter name:");

name = keyboard.nextLine();

if (!name.matches("[a-zA-Z_]+")) {

System.out.println("Invalid name");

}

String number;

System.out.println("Enter number:");

number = keyboard.nextLine();

if (!number.matches("[0-9]+")) {

System.out.println("Invalid number");

}

这里有一个学习regex的好教程。

几乎是对的-但是如果你想让regex工作的话,你必须把这个数字读成一个字符串。另外,您应该正确地缩进示例代码。

是的,你是对的。

还有"更高级"的regex解决方案。Java模式文档

如果使用nextline()读取两个输入,则可以使用此(未测试的代码):

boolean isWordOnly = Pattern.matches("\w*", name);    //name is in your code

boolean isFloatOnly = Pattern.matches("\d*.?\d*", number);    //number is in your code too

现在,太布尔值告诉您输入中是否有所需的格式。您可以将它添加到do-while循环或任何您想要的循环中。

开始学习Reg(ular)Ex(Presions)是一个好主意,因为它们在字符串格式中很有用(假设您必须测试输入是否是有效的电子邮件…)。通常也用于检查SQL注入和应用程序和程序中的许多关键内容。

你好像在用scanner。如果是,可以使用scanner类'hasNextDouble()在读取double之前检查输入是否为double,如下所示:

double number;

System.out.println("Enter number:");

if (keyboard.hasNextDouble()){

name = keyboard.nextDouble();

}

查看scanner类文档了解更多信息。

double number = 0;

try {

number = Double.parseDouble(name)

} catch (NumberFormatException ex) {

System.out.println("Name is not a double.");

}

如果number不是双份的,你可以抓一份NumberFormatException。

您可以循环遍历String的每个字符,并使用Character.isAlphabetic(char)检查它是否不是字母:

Scanner keyboard = new Scanner(System.in);

System.out.println("Enter name:");

String name = keyboard.nextLine();

for (char c : name.toCharArray()) {

if (!Character.isAlphabetic(c)){

System.out.println("INVALID");

break;

}

}

要只接受数字,可以使用Character.isDigit(char)函数执行类似的操作,但请注意,必须将输入读取为String而不是double,或者将输入读取为double并使用Double.toString(d)将其转换为String。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值