它在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;
}
答案 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
}