如果您创建一个变量类型String,您仍然可以输入数字。
示例:
"输入姓名:123"
该名称仍然被接受。如何使变量名只接受字母,否则会出现错误信息?
答案 0 :(得分:5)
您无法将用户输入限制为仅数字,但您可以验证该输入以确保其符合您的期望。例如,如果您想确保您的字符串不包含任何数字,您可以这样做:
if(str.matches(".*\\d.*")){
// contains a number
} else{
// does not contain a number
}
答案 1 :(得分:1)
我不知道这样做的任何原生函数,买你只需读取字符串(char per char)并询问值是否介于65和90之间(大写字母)或97和122(正常字母) )。
代码如下:
String string = "ABCD";
boolean hasOtherCharacters = false;
for ( int i = 0; i < string.length();i++ )
{
if ( !(string.charAt(i) >= 65 && string.charAt(i) <= 90) && !(string.charAt(i) >= 97 && string.charAt(i) <= 122) )
{
hasOtherCharacters = true;
break;
}
}
if ( hasOtherCharacters )
{
//WHATEVER YOU WANT
警告:如果您的字符集介于ASCCI范围之间,则此解决方案适用。
答案 2 :(得分:1)
如果没有任何其他库的帮助,您只需使用Javas模式匹配器:
Pattern p = Pattern.compile("\\D*");
String test1 = "abc";
String test2 = "abc123";
Matcher m1 = p.matcher(test1);
System.out.println("does test1 only contain letters? " + m1.matches());
//prints true
Matcher m2 = p.matcher(test2);
System.out.println("does test2 only contain letters? " + m2.matches());
//prints false
答案 3 :(得分:0)
如果使用JTextField或允许侦听器而不仅仅是命令行的东西,则可以阻止用户使用KeyListener输入数字:
userEntry.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if (Character.isDigit(e.getKeyChar())) {
e.consume();
}
}
});
答案 4 :(得分:0)
您可以使用lambda表达式检查字符串是否为数字:
String myString = "abcdef1234567890";
if (myString.chars().allMatch( Character::isDigit ))
如果字符串只包含数字
,则输出True