我是编程新手,我不断收到一条错误消息,我不知道如何解决
I am new to programming and I keep receiving an error message I don't know how to resolve
我正在编写一个程序来接收用户输入的温度并将其转换为摄氏度或华氏度,但我一直收到错误消息:找不到符号。
我已经尝试过更改一些变量名,并且我已经仔细检查过它是否有意义,但由于我是编程新手,所以我不确定我是否以正确的方式看待它。
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);
^
您的变量 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;
奖金:
"cannot find symbol" 错误通常发生在您尝试在代码中引用未声明的变量时。您的代码基本上是指编译器不理解的内容。
编译代码时,编译器需要计算出代码中每个标识符的含义。当编译器遍历代码时,它会找到一些东西并知道如何处理它。您找不到符号错误与标识符有关,这意味着 Java 无法弄清楚 "symbol" 的含义。
您混淆了 CtoF 和 FtoC 方法中局部变量的范围。 'tempC' 和 'tempF' 仅在这些方法的范围内可用。您需要将方法调用的 return 值分配给与打印相同范围内的变量,或者直接在打印参数中使用方法调用:
case 0:
System.out.println(CtoF(numToConvert));
break;
case 1: {
double tmpC = FtoC(numToConvert);
System.out.println(tmpC);
}
break;
我正在编写一个程序来接收用户输入的温度并将其转换为摄氏度或华氏度,但我一直收到错误消息:找不到符号。
我已经尝试过更改一些变量名,并且我已经仔细检查过它是否有意义,但由于我是编程新手,所以我不确定我是否以正确的方式看待它。
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); ^
您的变量 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;
奖金:
"cannot find symbol" 错误通常发生在您尝试在代码中引用未声明的变量时。您的代码基本上是指编译器不理解的内容。
编译代码时,编译器需要计算出代码中每个标识符的含义。当编译器遍历代码时,它会找到一些东西并知道如何处理它。您找不到符号错误与标识符有关,这意味着 Java 无法弄清楚 "symbol" 的含义。
您混淆了 CtoF 和 FtoC 方法中局部变量的范围。 'tempC' 和 'tempF' 仅在这些方法的范围内可用。您需要将方法调用的 return 值分配给与打印相同范围内的变量,或者直接在打印参数中使用方法调用:
case 0:
System.out.println(CtoF(numToConvert));
break;
case 1: {
double tmpC = FtoC(numToConvert);
System.out.println(tmpC);
}
break;