Java-If-Else-If问题新手
我只是在学习Java,完全被这段代码难住了。我环顾四周,但语言知识的一部分是知道正确的问题可以问,我已经没有想法可以搜索了。在我看来一切都很好,但我希望一个更有经验的人能在这方面教我一点 每当我在100到213的温度(不管摄氏度或华氏度)下运行此代码或单步执行时,elseif将始终运行。有人能告诉我为什么会发生这种事,或者让我进入正确的思维模式吗?代码如下:Java-If-Else-If问题新手,java,if-statement,Java,If Statement,我只是在学习Java,完全被这段代码难住了。我环顾四周,但语言知识的一部分是知道正确的问题可以问,我已经没有想法可以搜索了。在我看来一切都很好,但我希望一个更有经验的人能在这方面教我一点 每当我在100到213的温度(不管摄氏度或华氏度)下运行此代码或单步执行时,elseif将始终运行。有人能告诉我为什么会发生这种事,或者让我进入正确的思维模式吗?代码如下: package chapter.pkg3; import java.util.Scanner; public class Chapte
package chapter.pkg3;
import java.util.Scanner;
public class Chapter3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Please enter the temperature: ");
double temp = in.nextDouble();
System.out.print("Please enter the temperature measurement, C or F: ");
String measure = in.next();
if (measure.equals("C"))
{ measure = "Celsius";}
else
{measure = "Fahrenheit";}
if ((temp <= 0 && measure.equals("C")) || (temp <= 32 && !measure.equals("C")))
{
System.out.print("The temperature is " + temp + " " + measure + ". The water
is freezing!");
}
if ((temp <= 100 && measure.equals("C")) || (temp <= 212 && !measure.equals("C")))
{
System.out.print("The temperature is " + temp + " " + measure + ". The water
is liquid.");
}
if ((temp > 100 && measure.equals("C")) || (temp > 212 && !measure.equals("C")))
{
System.out.print("At " + temp + " " + measure + " the water has become gas.");
}
}
package chapter.pkg3;
导入java.util.Scanner;
公共课第三章{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
系统输出打印(“请输入温度:”);
双温=in.nextDouble();
系统输出打印(“请输入温度测量值,C或F:”);
字符串度量值=in.next();
if(度量值等于(“C”))
{measure=“摄氏”;}
其他的
{measure=“华氏”;}
如果((温度在if
条件中,如if
在if
条件中,如temp在
if ((temp <= 0 && measure.equals("C")) || (temp <= 32 && !measure.equals("C")))
{
System.out.print("The temperature is " + temp + " " + measure + ". The water
is freezing!");
}
if((温度
if ((temp <= 0 && measure.equals("C")) || (temp <= 32 && !measure.equals("C")))
{
System.out.print("The temperature is " + temp + " " + measure + ". The water
is freezing!");
}
if((temp正确检查代码。如果用户输入“C”,您已经初始化了measure=“Celcius”。因此度量值是“Celcius”而不是“C”。声明另一个变量字符串measurement=“Celcius”;
然后在if-else语句中:
if (measure.equals("F"))
{ measurement = "Fahrenheit";}
正确检查您的代码。如果用户输入“C”,您已经初始化了measure=“Celcius”。因此,measure的值是“Celcius”而不是“C”。声明另一个变量字符串measure=“Celcius”;
然后在您的if else语句中:
if (measure.equals("F"))
{ measurement = "Fahrenheit";}
顺便说一句,请使用equalsIgnoreCase()而不是equals()。请正确检查您的代码。如果用户输入“C”,您已经初始化了measure=“Celcius”。因此,measure的值是“Celcius”而不是“C”。@gjman2感谢您的建议,我也不知道equalsIgnoreCase()。非常感谢!顺便说一句,请使用equalsIgnoreCase()而不是equals()请正确检查您的代码。如果用户输入“C”,您已经初始化了measure=“Celcius”。因此,measure的值是“Celcius”而不是“C”。@gjman2感谢您的建议,我也不知道equalsIgnoreCase()。非常感谢!如果您确信只能执行其中一个,那么这不是问题。(也就是说,如果if
s中只有一个是真的,那么这个建议的更改不会起任何作用)但是如果你有例如temp=-10
,那么第一个和第二个if
子句是真的,假设度量值是“C”
--10真的。(这是我在没有充分考虑的情况下键入的结果。很抱歉收到垃圾邮件。)好的,如果您确信只能执行其中一个,那么这不是问题。(例如,如果if
s中只有一个是真的,那么这个建议的更改不会起任何作用),但是如果您有例如temp=-10
,那么第一个和第二个if
子句是真的,假设度量值是“C”
--10正确。(这是我在没有充分思考的情况下键入的结果。很抱歉收到垃圾邮件。)谢谢!为了将来的改进,您是否建议在C in:System.out.print(请输入温度测量值,C或F:)后面添加(摄氏度)以供参考;或者有没有一种很好的方法可以像上面那样添加它,但不删除if((temp@mbnew)中的值,我建议将代码分为两部分:一部分表示“F”,另一部分表示“C”当你处于这些if语句的中间时,用户不会改变它,所以你可以保存你自己多次检查它。@ MbNew你可以创建单独的变量来表示度量的含义,当你只显示一个文本时(在Soal.Out.PrtLn(”)中可以使用它。.Gotcha,所以类似于gjman在这个线程底部建议的内容:“if(measure.equals(“F”){measurement=“Fahrenheit”;}”,然后将其拆分为两个不同的代码段是理想的?@mbnew I将创建枚举{冻结,气体,液体}和枚举构造函数水类型(字符串度量)和enum对象中的特殊方法(甚至可能通过重写toString方法)来为用户显示文本。为了更简单的使用,您可以按照gjman所说的做。谢谢!为了将来的改进,您是否建议只在C in:System.out.print(“请输入温度测量值,C或F:”)后面添加(摄氏度);或者有没有一种很好的方法可以像上面那样添加它,但不删除if((temp@mbnew)中的值,我建议将代码分为两部分:一部分表示“F”,另一部分表示“C”当你处于这些if语句的中间时,用户不会改变它,所以你可以保存你自己多次检查它。@ MbNew你可以创建单独的变量来表示度量的含义,当你只显示一个文本时(在Soal.Out.PrtLn(”)中可以使用它。.Gotcha,所以类似于gjman在这个线程底部建议的内容:“if(measure.equals(“F”){measurement=“Fahrenheit”;}”,然后将其拆分为两个不同的代码段是理想的?@mbnew I将创建枚举{冻结,气体,液体}和枚举构造函数水类型(字符串度量)和enum对象中的特殊方法(甚至可能通过重写toString方法)来为用户显示文本。