英文:
Variable in Java Not Recognized
问题
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.equals("C")) { // Checks if temp is Celsius
double tempF = (tempDouble * 1.8) + 32; // Converts temp to Fahrenheit
System.out.println(tempDouble + "C equals " + tempF + "F."); // Displays conversion of C to F
} else if (type.equals("F")) { // Checks if temp is Fahrenheit
double tempC = (tempDouble - 32) / 1.8; // Converts temp to Celsius
System.out.println(tempDouble + "F equals " + tempC + "C.");
} else {
System.out.println("Incorrect input for Celsius or Fahrenheit"); // Tells user they didn't input C or F correctly
}
}
英文:
For an assignment I'm creating a command line program to change an inputted temp from Celsius (C) to Fahrenheit (F) & vice versa. The program runs fine until the user inputs the temp type (C/F), and then it doesn't seem to recognize the user input. What I am doing wrong?
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
得分: 1
以下是翻译好的内容:
代码中存在两个问题
- 你在检查对象相等性,而不是对象的值。应该使用 String.equals 方法进行比较。
- if-else 块的结构错误,它总是会打印出 "温度输入有误,不是摄氏温度或华氏温度"。
以下是正确的代码示例 -
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入温度:"); //提示用户输入温度
String temp = input.nextLine(); //允许用户输入温度数据
double tempDouble = Double.parseDouble(temp); //将输入从字符串转换为双精度
System.out.println("是摄氏温度还是华氏温度?(输入 C 表示摄氏温度,输入 F 表示华氏温度):"); //提示用户输入温度类型
String type = input.nextLine(); //允许用户输入温度类型
if ("C".equals(type)) { //检查温度是否为摄氏温度
double tempF = 0;
tempF = (tempDouble * 1.8) + 32; //将温度转换为华氏温度
System.out.println(tempDouble + "摄氏度等于 " + tempF + "华氏度。"); //显示摄氏温度转华氏温度的转换结果
//Tf = Tc * 1.8 + 32
} else if ("F".equals(type)) { //检查温度是否为华氏温度
double tempC = 0;
tempC = (tempDouble - 32) / 1.8; //将温度转换为摄氏温度
System.out.println(tempDouble + "华氏度等于 " + tempC + "摄氏度。");
//Tc = (Tf - 32) / 1.8
} else {
System.out.println("温度输入有误,不是摄氏温度或华氏温度"); //告诉用户他们没有正确输入 C 或 F
}
}
英文:
There are two problems in the code
- You are checking object equality not the value of the object. User String.equals method for that.
- The construct of the if-else block is wrong, it will always print "Incorrect input for Celsius or Fahrenheit".
Here is the correct one -
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
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论