java - 声明变量,编译器找不到符号

标签 java

因此,对于一个项目,我正在开发这个程序。它的目的是获取用户的输入并用它来转换测量值。我收到这些错误:

ConversionWilson.java:69: error: cannot find symbol
  kilometers = meters * 0.001;
  ^
symbol:   variable kilometers
location: class ConversionWilson
ConversionWilson.java:70: error: cannot find symbol
  System.out.println(meters + " meters converted to kilometers becomes: " + kilometers + "km");
                                                                            ^
symbol:   variable kilometers
location: class ConversionWilson
ConversionWilson.java:75: error: cannot find symbol
  inches = meters * 39.37;
  ^
symbol:   variable inches
location: class ConversionWilson
ConversionWilson.java:76: error: cannot find symbol
  System.out.println(meters + " meters converted to inches becomes: " + inches + "in");
                                                                        ^
symbol:   variable inches
location: class ConversionWilson
ConversionWilson.java:81: error: cannot find symbol
  feet = meters * 3.281;
  ^
symbol:   variable feet
location: class ConversionWilson
ConversionWilson.java:82: error: cannot find symbol
  System.out.println(meters + " meters converted to feet becomes: " + feet + "ft");
                                                                      ^
symbol:   variable feet
location: class ConversionWilson
ConversionWilson.java:87: error: cannot find symbol
 switch (conversion)
         ^
symbol:   variable conversion
location: class ConversionWilson
ConversionWilson.java:90: error: cannot find symbol
        showKilometers(meters);
                       ^
symbol:   variable meters
location: class ConversionWilson
ConversionWilson.java:94: error: cannot find symbol
        showInches(meters);
                   ^
symbol:   variable meters
location: class ConversionWilson
ConversionWilson.java:98: error: cannot find symbol
        showFeet(meters);
                 ^
symbol:   variable meters
location: class ConversionWilson
10 errors

我已经声明了所有变量。不确定到底出了什么问题。

double meters; // Distance as set by the user.
String input; // Input by the user.
char conversion; // Code for the type of conversion.
double kilometers; // The kilometers from the conversion.
double inches; // The inches from the conversion.
double feet; // The feet from the conversion.

// Scanner object to read input
Scanner keyboard = new Scanner (System.in);
// Prompt the user for distance and conversion.
System.out.println("Welcome to the Conversion Program.");
System.out.println("With this program, you can enter a distance and convert it to another form of measurement.");
System.out.print("Please enter the distance in meters: ");

if (meters >= 0)
{
   meters = keyboard.nextDouble();
}
else
{
   System.out.println("Meters cannot be a negative number. Please choose a positive number.");
}

System.out.print("Please enter the number of the conversion you want to make: \n" +
                 "1. Convert to Kilometers \n" + "2. Convert to Inches \n" + "3. Convert to Feet \n" +
                 "4. Quit Program");
input = keyboard.nextLine();
conversion = input.charAt(0);

// Deciding what conversion method to call.

switch (conversion)
{
  case '1':
     showKilometers(meters);
     break;

  case '2':
     showInches(meters);
     break;

  case '3':
     showFeet(meters);
     break;

  case '4':
     System.out.println("Beep boop bop. Quitting the program now. Later.");
     break;

  default:
     System.out.println("You did not select a possible choice. Please run the program again and be sure to choose a correct number.");
 }         
}            
public static void showKilometers(double meters)
{
   kilometers = meters * 0.001;
   System.out.println(meters + " meters converted to kilometers becomes: " + kilometers + "km");
}

public static void showInches(double meters)
{
   inches = meters * 39.37;
   System.out.println(meters + " meters converted to inches becomes: " + inches + "in");
}

public static void showFeet(double meters)
{
   feet = meters * 3.281;
   System.out.println(meters + " meters converted to feet becomes: " + feet + "ft");
}

这一定是一些简单的事情,我只是错过了,对吧?

最佳答案

您需要将此变量声明为实例变量,以便可以在所有类方法中访问。

我认为您已经在主方法或类方法之一中声明了这些变量,因此您需要将它们移到方法之外。

public class MyClass {

    private double meters; // Distance as set by the user.
    private String input; // Input by the user.
    private char conversion; // Code for the type of conversion.
    private double kilometers; // The kilometers from the conversion.
    private double inches; // The inches from the conversion.
    private double feet; // The feet from the conversion.

    public static void showKilometers(double meters)
    {
       kilometers = meters * 0.001;
       System.out.println(meters + " meters converted to kilometers becomes: " + kilometers + "km");
    }
}

关于java - 声明变量,编译器找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618229/

相关文章:

java - PeripherialManager.getInstance() 抛出 java.lang.RuntimeException : Stub

c# - DDD 和 “Onion Architecture” 是什么关系?

java - 使用带有 View 而不是 Activity 的 Android 选项卡的示例?

java - 大于 127 的字节值

java - Jsoup元素文本到textview

java - 控制台类java

Java : Overridden method does not throw 'java.lang.Throwable'

java - 有没有办法在应用程序服务器外部执行 EJB?

java - 用spring 2.5在服务层加载.jasper

java - 为什么我的 Android 倒计时器这么慢?