java - 必须在 Dr.Java 中找到奇数,但总是出现缺少返回语句的错误

标签 java drjava

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

  1. 缺少 return 语句错误,即使我在 if 语句中有 return 语句。有人可以解释这个错误的含义以及如何解决它吗?

  2. 当我输入 return x; 时,它会打印 56781 的错误答案 49;在方法的末尾。

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

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) );       
}

最佳答案

当您找到第一个奇数位时,您可能不想立即返回。您还需要将结果转换回 int (以匹配您的返回类型)。您可以使用Integer.parseInt(String)解析它;您可以使用 StringBuilder 构建该 String。另外,您可以将该方法设置为静态。就像,

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

关于java - 必须在 Dr.Java 中找到奇数,但总是出现缺少返回语句的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46375975/

相关文章:

java - 创建 JAR 时为 "invalid header field"(在 list 中?)

java - 刷新添加一个额外的参数

java - 模拟 void 方法,改变它们的参数

java - 如何递归执行插入排序

java - 如何将文本文件中的大写字母视为缩写

java - 我正在尝试合并两个整数字符串,但我正在使用的程序 Java 博士不允许我使用 ArrayUtils?

java - "must implement the inherited abstract method java.awt.event.ActionListener.actionPerformed(java.awt.event.ActionEvent)"是什么意思?

java - 从抽象类中获取具体类名

java - 当 XML 中有更多字段时 xStream 崩溃