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

Java 表达式的类型必须是数组类型,但已解析为字符串,java,arrays,string,types,Java,Arrays,String,Types,它是java代码的一部分。不幸的是,当argz出现时,我遇到了一个错误:expression的类型必须是数组类型,但它解析为字符串 你知道我为什么不能做吗\0'等等?如果有任何帮助,我将不胜感激 public static int parsuj(String argz) throws Zakres,NieprawidlowaDana { int i=0; while(argz[i] != '\0'){ if(argz[i]=='-')

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

你知道我为什么不能做吗\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;

}

您应该使用字符串方法
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
}
公共静态int-parsuj(字符串argz)抛出Zakres,NieprawidlowaDana{
对于(inti=0;i如果(!(argz.charAt(i)>='0'&&argz.charAt(i)您应该使用字符串方法
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
}
公共静态int-parsuj(字符串argz)抛出Zakres,NieprawidlowaDana{
对于(inti=0;i根据immibis注释,如果(!(argz.charAt(i)>='0'&&argz.charAt(i),则Java确实不是C。因此字符串操作确实不同。请参阅可用于字符串的方法

对于您的代码片段:

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);
}
公共静态int-parsuj(字符串argz)抛出Zakres,NieprawidlowaDana{
对于(int i=0;i

说明:使用方法
String.charAt(int)
用于从字符串中检索单个字符。要检查字符是否为数字,必须使用class
character
中的静态方法
isDigit
。最后但并非最不重要的一点是,字符串知道其长度,并且-除了C-字符串不以空结尾。

根据immibis注释,Java确实不是C。因此s字符串操作确实不同。请参阅可在字符串上使用的方法

对于您的代码片段:

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);
}
公共静态int-parsuj(字符串argz)抛出Zakres,NieprawidlowaDana{
对于(int i=0;i


说明:使用方法
String.charAt(int)
用于从字符串中检索单个字符。要检查字符是否为数字,必须使用class
character
中的静态方法
isDigit
。最后但并非最不重要的一点是,字符串知道其长度,并且-除了C-字符串之外-字符串不以null结尾。

在哪里输入argz?为什么还要尝试我将它与C++代码进行比较,我把ARGZ比较一下。我比较了一个字符串应该是char。我在C++中写了,现在尝试把它转换成Co java。我认为检查字符串是一件正常的事情。首先要对字符串的字符进行迭代,使用字符串γggchAT(int index)。你有混合字符串和数组概念,你在哪里输入ARGZ,为什么还要尝试将它与<代码> 0?<代码>比较?我放ARGZ。我比较一个字符串应该是char。我在C++中写下,现在尝试转换它java。我认为检查字符串是一件正常的事情。首先要迭代STR的字符。使用String#getCharAt(int-index)可以混合字符串和数组的概念,这里究竟是什么
int x=Integer.parseInt(x);返回x;
though@Java1这也是一个bug,我想他可能想解析argz@user3402584编辑了答案也解决了这个问题,你可以按照我的方式做,或者按照专家的建议使用str.length()这是一种更正常的方法,我想你应该知道java没有Strings的0-终止,而实际上是
intx=Integer.parseInt(x);返回x;
though@Java1这也是一个bug,我想他可能想解析argz@user3402584编辑了答案也解决了这个问题,你可以按照我的方式做,或者按照专家的建议使用str.length()这是一种更正常的方法,我想你应该知道java没有字符串的0-终止。我似乎找不到
x
的使用位置,也找不到
argz
的声明位置。对
x
argz
的混淆我想得很清楚。我只是复制了刚刚编辑好的OP的代码片段。我会编辑我的答案。很酷,现在是有道理。在发布这个问题之前,我似乎应该多读一些。无论如何,谢谢你的帮助!我似乎找不到哪里使用了
x
,也找不到哪里声明了
argz
。对
x
argz
的困惑我想得很清楚。我只是复制了刚才编辑的OP代码片段。将编辑我的答案。cool现在它是有意义的。似乎我应该在发布这个问题之前阅读更多。无论如何,谢谢你帮我解决这个问题!