我想在HW的整数中找到奇数。所以countOddigtis(56781)应该返回(NOT PRINT)5 7 1.我的方法是将整数转换为字符串并使用它返回。我遇到的问题是
缺少return语句错误,即使我在if语句中有return语句。有人可以解释这个错误意味着什么,以及如何通过它?
当我放回x时,它为56781输出了错误的答案49;在方法结束时。
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) );
}
答案 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