表达式的类型必须是数组类型,但它已解析为字符串

时间:2014-03-26 08:24:48

标签: java arrays string types

它在java中的代码部分。不幸的是,当argz出现时我遇到了一个错误:expresssion的类型必须是数组类型,但它解析为String。

为什么我不能做argz[i]!='\0'等等的任何想法?我将不胜感激任何帮助。

public  static int parsuj(String argz) throws Zakres,NieprawidlowaDana {
    int i=0;
    while(argz[i] != '\0'){         
        if(argz[i]=='-')
            throw new Zakres();
        if( !argz.isdigit(i) )
            throw new NieprawidlowaDana();

        i=i+1;
    }
    int x = Integer.parseInt(argz);

    return x;

}

2 个答案:

答案 0 :(得分:3)

根据immibis评论,Java确实不是C.所以字符串操作确实不同。请参阅String documentation了解可以在字符串上使用的方法。

对于您的代码段:

public static int parsuj(String argz) throws Zakres,NieprawidlowaDana {
    for (int i = 0; i < argz.length(); i++) {
        if (argz.charAt(i) == '-')
            throw new Zakres();
        if (!Character.isDigit(argz.charAt(i)))
            throw new NieprawidlowaDana();
    }
    return Integer.parseInt(argz);
}

说明:使用方法String.charAt(int)从字符串中检索单个字符。要检查字符是否为数字,您必须使用类isDigit中的静态方法Character。并且 - 最后但并非最不重要 - 一个字符串知道它的长度 - 除了在C中 - 字符串不是以空值终止的。

答案 1 :(得分:2)

您应该使用String方法charAt

public  static int parsuj(String argz) throws Zakres,NieprawidlowaDana {

    for(int i = 0; i < argz.length(); i++){         
        if(argz.charAt(i) =='-')
            throw new Zakres();
        if( !(argz.charAt(i) >= '0' && argz.charAt(i) <= '9' ) )
            throw new NieprawidlowaDana();
        }
    return Integer.parseInt(argz); //I'll assume here you wanted to parse argz
}