【问题标题】:Strange result when trying to add a char after an integer and then print the result尝试在整数后添加字符然后打印结果时出现奇怪的结果
【发布时间】:2018-10-04 05:22:11
【问题描述】:

我正在尝试根据欧姆定律创建一个简单的计算器。 所以想法是你可以填写 2 个变量,然后它会计算第三个变量。

当我创建这个程序时,我发现了一个小问题,我不明白它是如何发生的,不幸的是我无法找到答案。

我试图打印一个显示完整计算的字符串。所以用户填写的2个变量和答案。在欧姆变量(本例中为“R”)之后,还应打印正确的符号。

如下例所示,我可以在变量后添加符号的唯一方法是首先添加一个空字符串(“”)。否则unicode会被添加到变量中?!

我做了一个简单的例子来说明我的问题:

public class Main {

    public static void main(String[] args) {
        float R = 2.54f;
        float U = 4.00f;
        float I = R / U;
        char ohm = '\u2126';
        System.out.println(R + "" + ohm + " (R) / " + U + "V (U) = " + I + "A (I)");
        System.out.println(R + ohm + " (R) / " + U + "V (U) = " + I + "A (I)");
    }
}

控制台中的结果:

2.54Ω (R) / 4.0V (U) = 0.635A (I)

8488.54 (R) / 4.0V (U) = 0.635A (I)

如您所见,第二次打印没有显示欧姆符号,而是为变量“R”添加了一个值。希望我已经把我的问题说得够清楚了。

提前致谢。

【问题讨论】:

    标签: java printing floating-point char


    【解决方案1】:

    R + ohm 执行floatchar (整数类型)的数字加法。因此,您会看到 float 结果,而不是您期望的字符串连接。你看到的float结果是8486 + 2.54(因为8486是十六进制数2126的十进制值)。

    在您的第一个println 语句中,您可以通过将String ("") 连接到float 来避免这种情况,这会产生String。然后将欧姆 char 连接到 String

    您也可以从空的String 开始以获得所需的输出:

    System.out.println("" + R + ohm + " (R) / " + U + "V (U) = " + I + "A (I)");
    

    【讨论】:

    • 感谢 Eran,非常明确的答案。现在我了解了问题所在,也更了解了串联过程以及结果 8488.54 是如何发生的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多