必须在Dr.Java中找到奇数但仍然会丢失返回语句错误

时间:2017-09-23 04:16:46

标签: java drjava

我想在HW的整数中找到奇数。所以countOddigtis(56781)应该返回(NOT PRINT)5 7 1.我的方法是将整数转换为字符串并使用它返回。我遇到的问题是

  1. 缺少return语句错误,即使我在if语句中有return语句。有人可以解释这个错误意味着什么,以及如何通过它?

  2. 当我放回x时,它为56781输出了错误的答案49;在方法结束时。

  3. Java可以解决吗? stringn.charAt(x)%2!= 0考虑到我可能(不确定)将字符串或字符与int进行比较?

  4. P.S保持简单,我没有太多Java,我刚刚开始。

    int countOddigits( int n )
    {
        int x = 0;
        String stringn = Integer.toString(n);
    
        while ( x <= stringn.length() - 1 )
        {
            if ( stringn.charAt(x) % 2 != 0 )
            {
                return stringn.charAt(x); 
            }
            x++;
        }
    }
    
    public void run()
    {
        System.out.printf("Odd number is %d\n: ", countOddigits(567981) );       
    }
    

1 个答案:

答案 0 :(得分:1)

当您找到第一个奇数位时,您可能不希望立即返回。您还需要将结果转换回int(以匹配您的返回类型)。您parse可以Integer.parseInt(String);并且您可以使用String构建StringBuilder。此外,您可以制作方法static。像,

static int countOddDigits(int i) { // <-- camel case, that is camelCase
    StringBuilder sb = new StringBuilder();
    // for each char ch in the String form of i converted to a character array
    for (char ch : String.valueOf(i).toCharArray()) {
        if (Character.digit(ch, 10) % 2 != 0) {
            sb.append(ch);
        }
    }
    return Integer.parseInt(sb.toString());
}

然后,为了测试它,你可以像

一样调用它
public static void main(String[] args) {
    int oddDigits = countOddDigits(56781);
    System.out.println(oddDigits);
}

哪个输出

571