0

我的代码有问题,我正在尝试测试 char 中的位置是否等于整数。我设置它的方式是这样的:

    for(int i = 0; i < str.length(); i++) {
        if(str.charAt(i) == '[1234567890]') {
            System.out.println(str);
        }
    }

但是,当我尝试编译时,我收到错误“未封闭的字符文字”。有谁知道我为什么会出错,或者可以解释一个更简单的方法来做到这一点?

4

5 回答 5

4

尝试:

if ( Character.isDigit(str.charAt(i)) )

您必须检查每个字符是否都是数字,以检查您的字符串是否包含整数。

于 2012-10-15T20:57:07.983 回答
3

'[1234567890]'不是一个char。Achar是单个字符。这就是您的代码无法编译的原因。

于 2012-10-15T20:55:52.793 回答
0

Your code cannot be compiled because in java character ' ( single quote ) is used to mark one character. In order to define string you should use double quote ".

In your case I believe that you wanted to check whether your string contains digits only and were confused with regular expression syntax you tried to use incorrectly.

You can either rewirte your if statement as following:

char c = str.charAt(i); if(c>= '0' && c <= 9) {

or use pattern matching, e.g. Pattern.compile("\\d+").matcher(str).matches()

In this case you even do not need to implement any loop.

于 2012-10-15T21:01:02.820 回答
0

我认为您正在尝试编写如下简单的内容:

for(int i = 0; i < str.length(); i++) {
    //check str.charAt(i) is one of the chars in 1234567890
    if("1234567890".indexOf(str.charAt(i))>=0) {   
        System.out.println(str.charAt(i));
    }
 }
于 2012-10-15T21:13:28.590 回答
0

您似乎正在尝试在字符文字中使用正则表达式表示法。那是行不通的。如果你想使用正则表达式,你可以写:

        if(str.substring(i, i+1).matches("[1234567890]") {

但写起来更好/更简单/更快/更清晰:

        if(Character.isDigit(str.charAt(i))) {

另一方面,即使您进行了此更改,str如果您的代码包含多个数字,它也会打印多次。那真的是你想要的吗?我想知道你是否想要更多这样的东西:

    if(str.matches("\d+"))
         System.out.println(str);

如果它的所有字符都是数字,它将打印str一次。

于 2012-10-15T20:58:11.717 回答