我正在尝试创建一种方法,该方法采用用户输入的数字,测试数字中的每个数字是否为奇数,如果所有数字均为奇数,则返回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()

10-06 10:54