Validation input to be string only and numbers only JAVA
本问题已经有最佳答案,请猛点这里访问。
我是一名学生,在验证输入方面有点问题。
1 2 3 4 5 6 7 8 9 |
我尝试的是将字符串解析为double的测试,但我做不到。我不知道如何测试double是否是唯一的数字。
请告诉我该怎么做。
可以使用正则表达式检查输入是否与约束匹配,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 | 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解决方案。Java模式文档
如果使用nextline()读取两个输入,则可以使用此(未测试的代码):
1 2 | 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注入和应用程序和程序中的许多关键内容。
你好像在用
1 2 3 4 5 | double number; System.out.println("Enter number:"); if (keyboard.hasNextDouble()){ name = keyboard.nextDouble(); } |
查看
1 2 3 4 5 6 | double number = 0; try { number = Double.parseDouble(name) } catch (NumberFormatException ex) { System.out.println("Name is not a double."); } |
号
如果
您可以循环遍历
1 2 3 4 5 6 7 8 9 10 |
要只接受数字,可以使用