我不知道为什么这段代码会自己换行
I don't know why this code does line breaking by itself
我把这段代码分成了三个部分;主要,DisSystem,DisIndexerUI。
其目的是计算不适指数。计算系统运行完美,但我发现打印结果有问题。这是结果:
input temperature
36
input humidity
42
Discomfort Index:96.75999999999999
Very very uncomfortable
It is
我觉得应该打印"It is very very uncomfortable",但是我打印出来的结果是
Very very uncomfortable
It is
这是一个非常奇怪的情况。我想知道为什么会这样。
我当然知道,如果我这样修复它:
System.out.println("Discomfort Index:"+ ui.input());
System.out.print("It is ");
ui.status();
它将打印 "It is Very very uncomfortable"。
但我认为这只是一个临时解决方案。为什么会断线?
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;
}
}
您正在使用 System.out.println("Text");,它会在打印字符串后将光标移动到下一行。如果您希望字符串通过多个打印语句位于同一行,请使用 System.out.print("Text");.
您只是在 status
方法中 return 一个空字符串,但打印实际值。
public String status() {
if (formula >= 86) {
return "Very very uncomfortable";
} else if (formula >= 83) {
return "Very uncomfortable";
} else if (formula >= 80) {
return "uncomfortable";
} else if (formula >= 75) {
return "nomal";
} else if (formula >= 70) {
return "good";
} else if (formula >= 68) {
return "very good";
} else {
return "";
}
}
进一步检查 else 语句中的空字符串是否适合您的用例。
此声明
System.out.println("It is" + ui.status());
调用 DisIndexerUI 实例 ui 的 status 成员首先打印文字和换行符,然后打印 returns 空字符串,该字符串连接到第一个操作数,然后打印评估的 "It is" + ""。将 DisIndexerUI 的 status() 方法更改为 return 文字而不是打印它会解决问题。
public String status() {
String str = "";
if (formula >= 86) {
str = "Very very uncomfortable";
} else if (formula >= 83) {
str = "Very uncomfortable";
} else if (formula >= 80) {
str = "uncomfortable";
} else if (formula >= 75) {
str = "nomal";
} else if (formula >= 70) {
str = "good";
} else if (formula >= 68) {
str = "very good";
}
return str;
}
快速修复:
将System.out.println("It is" + ui.status());
替换为ui.status()
;
将 System.out.print("It is ");
作为 status
方法中的第一个语句。
更好的方法: 听从 Thomas 的建议 - 对问题发表评论。
编辑:
实际上,代码并没有被破坏,它的行为符合预期。
在main
方法中,调用了System.out.println("It is" + ui.status());
。这里需要注意的一点是status
方法会先执行和return一个值。然后,returned 值(在该方法中声明为空字符串)将与字符串 - "It is" 连接。因此,当执行跳转到 status
方法时,您将根据条件打印字符串。因此,首先将打印这些字符串中的任何一个,然后将 returned 一个值。因此,您看到的输出符合预期。
我把这段代码分成了三个部分;主要,DisSystem,DisIndexerUI。 其目的是计算不适指数。计算系统运行完美,但我发现打印结果有问题。这是结果:
input temperature
36
input humidity
42
Discomfort Index:96.75999999999999
Very very uncomfortable
It is
我觉得应该打印"It is very very uncomfortable",但是我打印出来的结果是
Very very uncomfortable
It is
这是一个非常奇怪的情况。我想知道为什么会这样。
我当然知道,如果我这样修复它:
System.out.println("Discomfort Index:"+ ui.input());
System.out.print("It is ");
ui.status();
它将打印 "It is Very very uncomfortable"。 但我认为这只是一个临时解决方案。为什么会断线?
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;
}
}
您正在使用 System.out.println("Text");,它会在打印字符串后将光标移动到下一行。如果您希望字符串通过多个打印语句位于同一行,请使用 System.out.print("Text");.
您只是在 status
方法中 return 一个空字符串,但打印实际值。
public String status() {
if (formula >= 86) {
return "Very very uncomfortable";
} else if (formula >= 83) {
return "Very uncomfortable";
} else if (formula >= 80) {
return "uncomfortable";
} else if (formula >= 75) {
return "nomal";
} else if (formula >= 70) {
return "good";
} else if (formula >= 68) {
return "very good";
} else {
return "";
}
}
进一步检查 else 语句中的空字符串是否适合您的用例。
此声明
System.out.println("It is" + ui.status());
调用 DisIndexerUI 实例 ui 的 status 成员首先打印文字和换行符,然后打印 returns 空字符串,该字符串连接到第一个操作数,然后打印评估的 "It is" + ""。将 DisIndexerUI 的 status() 方法更改为 return 文字而不是打印它会解决问题。
public String status() {
String str = "";
if (formula >= 86) {
str = "Very very uncomfortable";
} else if (formula >= 83) {
str = "Very uncomfortable";
} else if (formula >= 80) {
str = "uncomfortable";
} else if (formula >= 75) {
str = "nomal";
} else if (formula >= 70) {
str = "good";
} else if (formula >= 68) {
str = "very good";
}
return str;
}
快速修复:
将System.out.println("It is" + ui.status());
替换为ui.status()
;
将 System.out.print("It is ");
作为 status
方法中的第一个语句。
更好的方法: 听从 Thomas 的建议 - 对问题发表评论。
编辑:
实际上,代码并没有被破坏,它的行为符合预期。
在main
方法中,调用了System.out.println("It is" + ui.status());
。这里需要注意的一点是status
方法会先执行和return一个值。然后,returned 值(在该方法中声明为空字符串)将与字符串 - "It is" 连接。因此,当执行跳转到 status
方法时,您将根据条件打印字符串。因此,首先将打印这些字符串中的任何一个,然后将 returned 一个值。因此,您看到的输出符合预期。