Java 表达式的类型必须是数组类型,但已解析为字符串
它是java代码的一部分。不幸的是,当argz出现时,我遇到了一个错误:expression的类型必须是数组类型,但它解析为字符串 你知道我为什么不能做吗\0'等等?如果有任何帮助,我将不胜感激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]=='-')
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)
用于从字符串中检索单个字符。要检查字符是否为数字,必须使用classcharacter
中的静态方法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)
用于从字符串中检索单个字符。要检查字符是否为数字,必须使用classcharacter
中的静态方法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现在它是有意义的。似乎我应该在发布这个问题之前阅读更多。无论如何,谢谢你帮我解决这个问题!