我正在尝试创建一种方法,该方法采用用户输入的数字,测试数字中的每个数字是否为奇数,如果所有数字均为奇数,则返回true,如果所有数字为偶数,则返回false。这是代码。
public static boolean allDigitsOdd(int num){
int digits[] = new int[10];
int numDigits = 0;
String numTemp = Integer.toString(num);
while(num > 1){
num = num/10;
numDigits++;
}
numDigits++;
for(int i = 0; i < numDigits; i++){
digits[i] = numTemp.charAt(i) - '0';
System.out.println(digits[i]);
}
for(int i = 0; i < numDigits; i++){
if(digits[i] % 2 == 0){
return(false);
}
if(i == numDigits){
return(true);
}
}
return(true);
}
当我输入'1234'或'1357'时,它可以很好地工作并返回正确的布尔值,但是当我键入几乎所有其他内容时,它给我一个'String index out of range'错误。
digits[1] = numTemp.charAt(i) - '0';
最佳答案
将while(num > 1)
更改为while(num >= 10)
。
否则,它仅适用于以1开头的数字(例如1234和1357),因为对于以2到9开头的数字(例如9436534或4334),您的numDigits
计算将过高1,导致“字符串索引超出范围”。
最好忘记numDigits
而只使用numTemp.length()
。