DJO*_*wen 0 java string contains
public final void nameErrorLoop () {
while (error) {
System.out.println("Enter the employee's name.");
setName(kb.next());
if (name.contains("[A-Za-z]")) {
error = false;
}
else {
System.out.println("The name can only contain letters.");
}
}
error = true;
}
Run Code Online (Sandbox Code Playgroud)
尽管在不同的方法中使用了类似的设置,但此方法仍然陷入常量循环,因为if语句始终为false.我已经尝试过.matches(),迄今为止我在Interent上找到的任何内容都没有帮助.有什么想法吗?感谢您的帮助.
编辑:我刚刚注意到,当我完成项目时,试图打印'name'以后只显示名字,而最后一个名字从未打印过.有什么办法可以让'name'字符串包括在内吗?
Jon*_*eet 10
String.contains 不使用正则表达式 - 它只是检查一个字符串是否包含另一个字符串,就像"foobar"包含"oob"一样.
听起来你想要检查name 只包含字母,在这种情况下你应该检查如下:
if (name.matches("^[A-Za-z]+$"))
Run Code Online (Sandbox Code Playgroud)
的+(而不是*),将检查它的非空; 在^和$会检查是否有什么比字母等.
但是,如果您希望它是全名,您可能希望允许空格,连字符和撇号:
if (name.matches("^[-' A-Za-z]+$"))
Run Code Online (Sandbox Code Playgroud)
还要考虑重音字符 - 以及其他语言的标点符号.
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |