尝试在整数后添加字符然后打印结果时出现奇怪的结果

时间:2018-10-04 05:22:12

标签: java printing floating-point char

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

在创建该程序时,我发现了一个小问题,但我不了解它是如何发生的,不幸的是我找不到答案。

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

如下面的示例所示,在变量之后添加符号的唯一方法是首先添加一个空string(“”)。否则,是否将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”添加了一个值。希望我已经清楚地阐明了我的问题。

谢谢。

1 个答案:

答案 0 :(得分:4)

R + ohmfloatchar(整数类型)执行数字加法运算。因此,您看到的是float结果,而不是您期望的String串联。您看到的float结果是8486 + 2.54(因为8486是十六进制数2126的十进制值)。

在您的第一个println语句中,您可以通过将Stringfloat串联来产生String来避免这种情况。然后将欧姆char连接到该String

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

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