Java中如何分别输出两个double值而非相加?温度转换方法疑问
解决你的Java温度转换输出问题
嘿,我来帮你搞定这两个问题!先看你的核心矛盾:原来的代码错误地把摄氏度和华氏度的值相加后输出了,我们需要调整代码让它们分别独立显示。
问题根源解析
你的outputDegreesF方法里有一行关键错误操作:
degreesC = degreesC + fahrenheit;
这行代码把计算好的华氏度和原始摄氏度做了加法,还把结果覆盖回了degreesC变量,最后输出的自然是两者的总和,而非两个独立的温度值。
解决方案
我们完全不需要修改degreesC的原始值,直接分别输出它和计算好的fahrenheit即可。这里有两种简单的实现方式,都符合你“不能将任何内容转为字符串”的要求(Java会自动处理基础类型的输出,不会报错):
方式1:分步输出变量与分隔符
修改后的outputDegreesF方法:
public static void outputDegreesF(double degreesC) { double fahrenheit = 32.0 + (degreesC * 9.0 / 5.0); // 先输出摄氏度,再输出空格分隔,最后输出华氏度并换行 System.out.print(degreesC); System.out.print(" "); System.out.println(fahrenheit); }
方式2:用格式化输出更规整
如果想让输出格式更统一(比如固定保留一位小数),可以用printf方法:
public static void outputDegreesF(double degreesC) { double fahrenheit = 32.0 + (degreesC * 9.0 / 5.0); // %.1f 表示保留1位小数,%n 表示换行 System.out.printf("%.1f %.1f%n", degreesC, fahrenheit); }
关于问题1的补充说明
在Java中要输出两个double值而不是相加,核心就是不要执行加法运算,而是直接输出两个变量:
- 同一行显示:用分隔符(比如空格)分开输出,或者用字符串拼接(
System.out.println(a + " " + b),Java会自动处理double到字符串的转换,完全安全不会报错) - 分行显示:分别调用
System.out.println(a)和System.out.println(b)即可
完整修改后的代码
把上面的方法替换到你的原代码中,完整代码如下:
public class tempChart { public static void degreeHeader (String cTitle, String fTitle) { System.out.println(cTitle + fTitle); } public static void outputDegreesF (double degreesC) { double fahrenheit = 32.0 + (degreesC * 9.0 / 5.0); System.out.print(degreesC); System.out.print(" "); System.out.println(fahrenheit); } public static void main(String[] args) { degreeHeader("Degrees (C)", " Degrees (F)\n"); System.out.println(); outputDegreesF(0.0); outputDegreesF(5.0); outputDegreesF(10.0); outputDegreesF(15.0); outputDegreesF(20.0); outputDegreesF(25.0); outputDegreesF(30.0); outputDegreesF(35.0); } }
运行后你会得到符合预期的输出:
Degrees (C) Degrees (F) 0.0 32.0 5.0 41.0 10.0 50.0 15.0 59.0 20.0 68.0 25.0 77.0 30.0 86.0 35.0 95.0
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

