有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Switch语句到If语句

这里是编程新手。将Switch语句转换为If语句有点困难。任何帮助和解释都将不胜感激

public void setScale(String scale){
     //everything will be in lower case
     switch (scale.toLowerCase()) {          
        //convert for Celsius - 0 since first place holder in array
        case "c":
        case "celsius":

            if (!this.scale.equals(scales[0])) {

                convertToCelsius();
                this.scale = scales[0];
            }

            break;


        default:
            System.out.println("Invalid value of scale! Try again");


     }
  }    

这是我认为应该的。我只是想知道这样做是否正确

public void setScale(String scale){
if(scale == "C" || scale == "celsius"){
  if(this.scale != scales[0]){
    convertToCelsius();
    this.scale = scales[0];
  }
}

else{
  System.out.println("Invalid scale");
}

  }

共 (1) 个答案

  1. # 1 楼答案

    如果你是编程新手,首先学习语言的基础知识是非常重要的。网上有几十本免费教程。在我看来,学习Java Java Tutorials站点是最全面的信息源。无论如何,下面是使用ifswitch语句的解释:

    ==运算符的用法:当应用于对象(类的实例)时,它检查两个引用是否指向同一对象

    示例

    String s1 = "Hello";
    String s2 = s1;
    
    s1 == s2 => true // because both references s1 and s2 point to the same String object
    

    但对于指向两个不同实例的两个参考变量,情况并非如此,如下例所示:

    String s1 = new String("Hello");
    String s2 = new String("Hello");
    
    s1 == s2 => false
    s1.equals(s2) => true 
    

    因此,您必须使用equals方法或equalsIgnoreCase()方法。看看equalsequalsIgnoreCase方法here的定义

    最后,您的代码应该如下所示:

        public void setScale(String scale){
            if("C".equalsIgnoreCase(scale) || "celsius".equalsIgnoreCase(scale)) {
                if(!this.scale.equals(scales[0])) {
                    convertToCelsius();
                    this.scale = scales[0];
                 }
            } else {
                System.out.println("Invalid scale");
            }
        }