【发布时间】:2018-08-14 11:11:42
【问题描述】:
我把这段代码分成三部分;主要,DisSystem,DisIndexerUI。 其目的是计算不适指数。计算系统完美运行,但我发现打印的结果有问题。结果如下:
input temperature
36
input humidity
42
Discomfort Index:96.75999999999999
Very very uncomfortable
It is
我认为它应该打印“非常非常不舒服”,但我打印的结果是
Very very uncomfortable
It is
这是一个非常奇怪的情况。我想知道为什么会这样。
我当然知道,如果我这样修复它:
System.out.println("Discomfort Index:"+ ui.input());
System.out.print("It is ");
ui.status();
它将打印“非常非常不舒服”。 但我认为这只是一个临时解决方案。为什么会断线?
public class Main {
public static void main(String[] args) {
double temp = 0;
double humidity = 0;
DisSystem dis = new DisSystem();
DisIndexerUI ui = new DisIndexerUI(dis);
System.out.println("Discomfort Index:"+ ui.input());
System.out.println("It is" + ui.status());
}
}
==================================
public class DisSystem {
public static double Formula(double temp, double humidity) {
double formula = 0.72 * (temp + humidity) + 40.6;
return formula;
}
}
=================================
import java.util.Scanner;
public class DisIndexerUI {
DisSystem disSystem;
double formula = 0;
public DisIndexerUI(DisSystem disSystem) {
this.disSystem = disSystem;
}
public double input() {
Scanner scanner = new Scanner(System.in);
System.out.println("input temperature");
double temp = Double.parseDouble(scanner.nextLine());
System.out.println("input humidity");
double humidity = Double.parseDouble(scanner.nextLine());
formula = disSystem.Formula(temp, humidity);
return formula;
}
public String status() {
String str = "";
if (formula >= 86) {
System.out.println("Very very uncomfortable");
} else if (formula >= 83) {
System.out.println("Very uncomfortable");
} else if (formula >= 80) {
System.out.println("uncomfortable");
} else if (formula >= 75) {
System.out.println("nomal");
} else if (formula >= 70) {
System.out.println("good");
} else if (formula >= 68) {
System.out.println("very good");
}
return str;
}
}
【问题讨论】:
-
看看
status(),然后想想你期望它做什么(我假设返回状态字符串)以及它实际做了什么(打印状态字符串并返回一个空字符串)。此外,启动调试器并亲自查看(学习这样做对将来有很大帮助)。 -
想想“为什么
status()返回一个空字符串?”
标签: java line-breaks