使用for循环识别字符串中的数字

时间:2016-12-21 19:20:58

标签: java loops for-loop numbers letter

我正在尝试确定使用for循环提供的输入中是否有数字。我一直试图这么做,甚至在谷歌的第二页搜索。我决定寻求帮助。这是我到目前为止所尝试的内容:

for (c = 0 ; c < 6 ; c = c++)
{
    c = input.charAt (0);

    if (Character.isDigit (c))
    {
        System.out.println ("Input must only contain letters.");
        return;
    }

}

基本上我正在尝试扫描任何字母,如果它们是字母或数字,则单独测试它们,这是我遇到的麻烦,因为只扫描了第一个字母。我也尝试在循环中键入“c ++”。我该如何扫描每一个字母?

编辑:糟糕,这是一个错误。我将它更改为c = c + 1,但它不起作用,我将其更改回c ++,但结果为c = c ++。

5 个答案:

答案 0 :(得分:3)

这一行:c = input.charAt(0);有两个问题。

首先,您可能不想在每次循环执行时重置迭代值c。所以也许可以将其更改为不同的变量,如下所示:

char chr = input.charAt(....

其次,您只抓取第一个char,因为您向.charAt()函数发送了0。试试这个:

char chr = input.charAt(c);
if (Character.isDigit (chr))
{
    System.out.println ("Input must only contain letters.");
    return;
}

答案 1 :(得分:2)

使用正则表达式和Java的Pattern类:

boolean b = Pattern.matches("[0-9]+", input);

如果您不熟悉正则表达式,[0-9] +将在字符串中找到0到9之间任何数字的一个或多个匹配项(“+”运算符)。然后你需要做的就是检查变量b是否为真(表示搜索找到了数字)或者是否为假(字符串中没有数字)。

另外,我注意到你正在以下列方式递增你的循环变量c:

c = c++

此操作实际上对c的值没有影响。在赋值语句中的变量之后的++运算符意味着“在之后将变量的值递增一个,将其当前值分配给另一个变量。然后发生的事情是您将c的值赋给这个递增的值永远不会保存回c,所以你的循环可能会无限延续。增加循环变量的正确方法如下:

for (c = 0; c < 6; c++) {
    // ...
}

答案 2 :(得分:0)

您不能同时使用c作为索引和值。试试这个:

for (int i = 0; i < 6; i++) {
    c = input.charAt(i);
    // ...
}

答案 3 :(得分:0)

我创建了这个布尔函数检查是否有帮助。

public static boolean containtsDigits(String input) {
        boolean isDigit = false;
        if(input != null && !input.isEmpty()){
            char[] letterCharArray = input.toCharArray();
            for(int i = 0 ; i < letterCharArray.length ; i++){
                if(Character.isDigit(letterCharArray[i])){
                    isDigit = true;
                    break;
                }
            }
        }

        return isDigit;
    }

答案 4 :(得分:0)

试试这个:

public void check(String word){

    int n=word.length();  // To Find length of the string.
    for(int c=0;c<n;c++ ){ 
        char ch=word.charAt(c); // for extracting every single element of word

        if(Character.isDigit(ch))  // To check if its Digit
        {
            System.out.println ("Input must only contain letters.");
            break;
        }
    }

    System.out.println ("All Good");
}