Java-If-Else-If问题新手

Java-If-Else-If问题新手,java,if-statement,Java,If Statement,我只是在学习Java,完全被这段代码难住了。我环顾四周,但语言知识的一部分是知道正确的问题可以问,我已经没有想法可以搜索了。在我看来一切都很好,但我希望一个更有经验的人能在这方面教我一点 每当我在100到213的温度(不管摄氏度或华氏度)下运行此代码或单步执行时,elseif将始终运行。有人能告诉我为什么会发生这种事,或者让我进入正确的思维模式吗?代码如下: package chapter.pkg3; import java.util.Scanner; public class Chapte

我只是在学习Java,完全被这段代码难住了。我环顾四周,但语言知识的一部分是知道正确的问题可以问,我已经没有想法可以搜索了。在我看来一切都很好,但我希望一个更有经验的人能在这方面教我一点

每当我在100到213的温度(不管摄氏度或华氏度)下运行此代码或单步执行时,elseif将始终运行。有人能告诉我为什么会发生这种事,或者让我进入正确的思维模式吗?代码如下:

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方法)来为用户显示文本。