Java - 具有多个答案的charAt

时间:2012-10-15 20:54:22

标签: java

我的代码遇到了一些问题,我试图测试char中的位置是否等于整数。我设置它的方式是这样的:

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

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

5 个答案:

答案 0 :(得分:4)

尝试:

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

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

答案 1 :(得分:3)

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

答案 2 :(得分: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

答案 3 :(得分:0)

您的代码无法编译,因为在java中,'(单引号)用于标记一个字符。要定义字符串,您应该使用双引号"

在您的情况下,我相信您想检查您的字符串是否仅包含数字,并且与您尝试错误使用的正则表达式语法混淆。

您可以将if语句重写为:

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

或使用模式匹配,例如 Pattern.compile("\\d+").matcher(str).matches()

在这种情况下,您甚至不需要实现任何循环。

答案 4 :(得分: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));
    }
 }