错误:摄氏无法解析为变量

时间:2011-07-24 11:44:45

标签: java variables methods

使用以下代码获取错误:

import java.util.Scanner;
public class FahrenheitToCelsius{


 public static void main(String[]args){
    convertFToC();
 }

  /*gets input representing fahrenheit and displays celsius equivalent*/
  public static void convertFToC(){
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter Fahrenheit temperature");
    double fahrenheit = scan.nextInt();            
    System.out.println(fahrenheit + " degrees Fahrenheit is " +
      fMethod(celsius) + " degrees Celsius");
  }


  /* calculates and returns the celsius equivalent */
  public static double toCelsius(double fahr){
    int BASE = 32;
    double CONVERSION_FACTOR = 9.0/ 5.0;
    double celsius = ((fahr-BASE)/(CONVERSION_FACTOR));
    return celsius;
  }
}

我得到以下内容:

Error: celsius cannot be resolved to a variable

我需要使用fMethod来调用toCelsius中的System.out.println但是我一直收到此错误。

7 个答案:

答案 0 :(得分:7)

您根本没有显示fMethod,但看起来您只是想要:

System.out.println(fahrenheit + " degrees Fahrenheit is " + toCelsius(fahrenheit)
                   + " degrees Celsius");

您无法在celsius中使用main,因为它是toCelsius方法中的局部变量。相反,您需要调用该方法并使用返回值。

答案 1 :(得分:4)

System.out.println(fahrenheit + " degrees Fahrenheit is " + fMethod(celsius) + " degrees Celsius"); //Step 4

应该阅读

System.out.println(fahrenheit + " degrees Fahrenheit is " + toCelsius(fahrenheit) + " degrees Celsius"); //Step 4

答案 2 :(得分:4)

当我认为您的意思是fMethod时,您拨打celsius不存在并传递fahrenheit的值。

变量celsiustoCelsius()的本地变量,因此无法在convertFToC()内解析。

答案 3 :(得分:3)

您需要调用您的toCelsius(double fahr)方法,如下所示:

System.out.println(fahrenheit + " degrees Fahrenheit is " + toCelsius(fahrenheit) + " degrees Celsius"); // Step 4

答案 4 :(得分:3)

方法convertFToC()

中的

您从用户那里获得fahrenheit并致电fMethod(celsius) 您应该致电fMethod( farenheit

更重要的是:

如果您阅读编译器错误消息,则不仅会出现错误,还会得到文件名和行号。如果您转到行号,您会看到一个celcius变量。

这很容易。我知道要求更容易,但你永远不会学会阅读错误信息并以这种方式解决问题。

学习阅读并理解错误消息。他们是有原因的。

答案 5 :(得分:2)

在标有 step4 的行上,您有一个名为celsius的未声明变量。也许应该是fahrenheit

答案 6 :(得分:2)

你在这里使用摄氏:

System.out.println(fahrenheit + " degrees Fahrenheit is " + fMethod(celsius) + " degrees Celsius");

但是,您确实只在toCelsius声明了摄氏度,而且超出了范围。