gpt4 book ai didi

java - 为什么对于某些值会出现错误,而对于其他值却不会?

转载 作者:行者123 更新时间:2023-12-01 12:28:39 26 4
gpt4 key购买 nike

我正在尝试创建一个方法,该方法接受用户输入的数字,测试数字中的每个数字是否为奇数,然后如果全部为奇数则返回 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”时,它工作得很好并返回正确的 boolean 值,但是当我输入几乎任何其他内容时,它会在

处给出“字符串索引超出范围”错误
    digits[1] = numTemp.charAt(i) - '0';

最佳答案

while(num > 1) 更改为 while(num >= 10)

否则,它仅适用于以 1 开头的数字(例如 1234 和 1357),因为对于以 2 到 9 开头的数字(例如 9436534 或 4334),您的 numDigits 计算> 将太高 1,导致“字符串索引超出范围”。

最好忘记 numDigits 而只使用 numTemp.length()

关于java - 为什么对于某些值会出现错误,而对于其他值却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com