java - float 方法的奇怪行为。重载?

标签 java floating-point println

有人知道为什么这不会返回任何内容吗?

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/

相关文章:

java - 从 Java 代码检查服务器是否在线

Python:浮点输入作为整数输出返回?

c++ - 二进制 32 float (IEEE) 中的前导位

java - 如何在Java中打印没有分号的Hello World?

ios - 连接 println 的混合类型

java - 欧拉数 java 中的精度

java - 不会比较从 PrintWriter 读入的 2 个相等的字符串

java - hibernate/投影中的 Ucase 等价物?

floating-point - 是否可以使用带符号的短 "2 bytes"而不是浮点 "4 bytes"导出 glTF 模型的顶点、UV 和法线?

java - Java 中使用 System.out.println 的多线程