我是编程新手,却不断收到错误消息,我不知道该如何解决

时间:2019-09-09 00:25:50

标签: java jgrasp

我正在编写一个程序,该程序接收来自用户的温度输入并将其转换为摄氏温度或华氏温度,但我一直收到错误:找不到符号。

我已经尝试过更改一些变量名,并且已经仔细检查了它是否有意义,但是由于对编程来说是新手,所以我不确定是否可以正确地查看它。

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);
                                       ^

2 个答案:

答案 0 :(得分:0)

您的变量tempCtempFFtoCCtoF方法中本地定义。因此,无法从main方法中引用它们。要解决此问题,请将FtoCCtoF的结果分配给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;