有人知道为什么这不会返回任何内容吗?
public static float sumDigits(int n) {
float retVar = 0;
while (n > 10) {
float d;
for (d = 0; d < n; d *= 10);
d /= 10;
retVar += n / d;
n %= d;
}
n += n;
return retVar;
}
我通过调用它
System.out.println(sumDigits(123) + "");
最佳答案
错误的分号放置:
for (d = 0; d < n; d *= 10); // that terminal semicolon will mess you up!
这相当于:
for (d = 0; d < n; d *= 10) {
// do nothing
}
- 去掉终端分号。
- 使 d 变量成为 for 循环的局部变量:
for (int d = 0; d < n; d *= 10) {...}
- 始终将所有循环 block 括在大括号内
- 良好的代码格式不仅仅是为了让您的代码循环更漂亮——它还可以帮助您进行调试。
关于java - float 方法的奇怪行为。重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22160970/