如何使它如此字符串不能是数字

时间:2015-07-03 13:53:37

标签: java

如果您创建一个变量类型String,您仍然可以输入数字。

示例:

"输入姓名:123"

该名称仍然被接受。如何使变量名只接受字母,否则会出现错误信息?

5 个答案:

答案 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