微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java中的变量无法识别

如何解决Java中的变量无法识别

对于一项作业,我正在创建一个命令行程序,以将输入的温度从摄氏(C)更改为华氏(F),反之亦然。该程序运行良好,直到用户输入了临时类型(C / F),然后它似乎无法识别用户输入。我在做什么错了?

public static void main(String[] args) {
        Scanner input = new Scanner(system.in);

        System.out.println("Please enter the temperature:"); //Prompts user for temperature
        String temp = input.nextLine(); //Allows user to input temp data
        double tempDouble = Double.parseDouble(temp); //Changes input from string to double

        System.out.println("Is " + temp + " degrees in Celsius or Fahrenheit? (Enter C or F):"); //Prompts user for type of temp
        String type = input.nextLine(); //Allows user to input temp type

        if (type == "C") { //Checks if temp is Celsius
            double tempF = 0;
            tempF = (tempDouble * 1.8) + 32; //Converts temp to Fahrenheit
            System.out.println(tempDouble + "C equals " + tempF + "F."); //displays conversion of C to F
            //Tf = Tc * 1.8 + 32

        } else if (type == "F") { //Checks if temp is Fahrenheit
            double tempC = 0;
            tempC = (tempDouble - 32) / 1.8; //Converts temp to Celsius
            System.out.println(tempDouble + "F equals " + tempC + "C.");
            //Tc = (Tf - 32) / 1.8
        }
        System.out.println("Incorrect input for Celsius or Fahrenheit"); //Tells user they didn't input C or F correctly
    }

解决方法

代码中有两个问题

  1. 您正在检查对象相等性,而不是对象的值。用户使用String.equals方法。
  2. if-else块的构造错误,它将始终显示“摄氏或华氏度输入不正确”。

这是正确的-

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter the temperature:"); //Prompts user for temperature
    String temp = input.nextLine(); //Allows user to input temp data
    double tempDouble = Double.parseDouble(temp); //Changes input from string to double

    System.out.println("Is " + temp + " degrees in Celsius or Fahrenheit? (Enter C or F):"); //Prompts user for type of temp
    String type = input.nextLine(); //Allows user to input temp type

    if ("C".equals(type)) { //Checks if temp is Celsius
        double tempF = 0;
        tempF = (tempDouble * 1.8) + 32; //Converts temp to Fahrenheit
        System.out.println(tempDouble + "C equals " + tempF + "F."); //Displays conversion of C to F
        //Tf = Tc * 1.8 + 32

    } else if ("F".equals(type)) { //Checks if temp is Fahrenheit
        double tempC = 0;
        tempC = (tempDouble - 32) / 1.8; //Converts temp to Celsius
        System.out.println(tempDouble + "F equals " + tempC + "C.");
        //Tc = (Tf - 32) / 1.8
    }else{
        System.out.println("Incorrect input for Celsius or Fahrenheit"); //Tells user they didn't input C or F correctly 
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。