我正在编写一个程序,该程序接收来自用户的温度输入并将其转换为摄氏温度或华氏温度,但我一直收到错误:找不到符号。
我已经尝试过更改一些变量名,并且已经仔细检查了它是否有意义,但是由于对编程来说是新手,所以我不确定是否可以正确地查看它。
import javax.swing.*;
public class Lab_two {
public static void main (String[] args) {
Object[] options = {"Celsius",
"Fahrenheit",
"Cancel"};
String initialInput = JOptionPane.showInputDialog("Enter the desired temperature to convert: ");
System.out.println(initialInput);
double numToConvert = Double.parseDouble(initialInput);
int optionDialog = JOptionPane.showOptionDialog(null, "Would you like to convert" + numToConvert + "to Celsius or Fahrenheit?",
"Temperature Conversions", 0, JOptionPane.INFORMATION_MESSAGE,null,
options, options[2]);
boolean lop = true;
while(lop) {
switch (optionDialog) {
case 0: CtoF(numToConvert);
System.out.println(tempC);
break;
case 1: FtoC(numToConvert);
System.out.println(tempF);
break;
case 2: System.out.println("Program canceled");
lop = false;
default: System.out.println("canceled = reset");
}
}
}
public static double FtoC(double tempF) {
double tempC = 5./9. * (tempF - 32);
return tempC;
}
public static double CtoF(double tempC) {
double tempF = 1.8 * tempC + 32;
return tempF;
}
}
如果用户输入77并选择华氏转换,那么我希望输出为25
相反,控制台显示:
Lab_two.java:28: error: cannot find symbol System.out.println(tempC); ^ symbol: variable tempC location: class Lab_two Lab_two.java:31: error: cannot find symbol System.out.println(tempF); ^
答案 0 :(得分:0)
您的变量tempC
和tempF
在FtoC
和CtoF
方法中本地定义。因此,无法从main
方法中引用它们。要解决此问题,请将FtoC
和CtoF
的结果分配给main方法内的相应变量,例如:
case 0:
double tempC = CtoF(numToConvert);
System.out.println(tempC);
break;
case 1:
double tempF = FtoC(numToConvert);
System.out.println(tempF);
break;
奖金:
当您尝试在代码中引用未声明的变量时,通常会出现“找不到符号”错误。您的代码基本上是指编译器无法理解的内容。
在编译代码时,编译器需要计算出代码中每个标识符的含义。编译器遍历代码时,它将发现某些内容并知道该如何处理。您找不到符号错误与标识符有关,并且意味着Java无法弄清楚“符号”的含义。
答案 1 :(得分:0)
您在CtoF和FtoC方法中混淆了局部变量的范围。 “ tempC”和“ tempF”仅在这些方法的范围内可用。您需要将方法调用的返回值分配给与打印范围相同的变量,或者只在参数中直接使用方法调用进行打印:
case 0:
System.out.println(CtoF(numToConvert));
break;
case 1: {
double tmpC = FtoC(numToConvert);
System.out.println(tmpC);
}
break;