Java 中的变量无法识别
Variable in Java Not Recognized
我正在创建一个命令行程序来将输入的温度从摄氏度 (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
}
代码中有两个问题
- 您正在检查对象是否相等,而不是对象的值。用户 String.equals 方法。
- if-else 块的构造是错误的,它总是打印“Incorrect input for Celsius or Fahrenheit”。
这是正确的 -
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
}
}
我正在创建一个命令行程序来将输入的温度从摄氏度 (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
}
代码中有两个问题
- 您正在检查对象是否相等,而不是对象的值。用户 String.equals 方法。
- if-else 块的构造是错误的,它总是打印“Incorrect input for Celsius or Fahrenheit”。
这是正确的 -
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
}
}