2016-03-15 36 views
-1

我無法弄清楚我的代碼出了什麼問題。我在同一個目錄中創建了兩個不同的文件,但我一直收到這個錯誤。感謝您的任何見解。「找不到符號」的java代碼

第一個文件是:

public class CircleDriver{ 
    public static void main (String[] args){ 
     Circle aCircle = new Circle(); 

     aCircle.setColor("green"); 
     aCircle.setRadius(10); 
     aCircle.display(); 

     Double circleArea = aCircle.computeArea(); 
     Double circumference = aCircle.computeCircumference(); 

     System.out.println("circle area: " + circleArea); 
     System.out.println("circle circumference: " + circumference); 
     System.out.println(); 
    } 
} 

第二個文件是:

CircleDriver.java:3: error: cannot find symbol 
      Circle aCircle = new Circle(); 
      ^
    symbol: class Circle 
    location: class CircleDriver 
CircleDriver.java:3: error: cannot find symbol 
      Circle aCircle = new Circle(); 
           ^
    symbol: class Circle 
    location: class CircleDriver 
`2 errors 

public class Circle{ 
    public double circumference; 
    public double PI = 3.14159; 
    public double radius; 
    public double area = 0; 
    public String color = ""; 

    public void setColor(String newColor){ 
     color = newColor; 
    } 

    public void setRadius(double newRadius){ 
     radius = newRadius; 
    } 

    public void display(){ 
     System.out.println("I am a circle"); 
     System.out.println("my color is " + color); 
     System.out.println("my radius is " + radius); 
    } 

    public double computeArea(){ 
      return PI * radius * radius; 
    } 

    public double computeCircumference(){ 
     return 2 * PI * radius; 
    } 
} 

當我嘗試編譯的第一個文件,我在命令提示符中得到這個

+0

這些類是否在同一個包中?如果不是,則需要將'Circle'導入到'CircleDriver'中。 – bradimus

+0

它不允許我編譯第一個文件。這正是我努力想要弄清楚的。 – bshea315

+0

爲什麼downvote?這是從新手的好問題.. –

回答

0

他們應該在包。如果不是,則必須導入Circle類的完全限定名(包名)。

在eclipse的情況下,它編譯所有需要的文件。當您使用命令行,請確保您編譯雙方Circle.javaCircleDriver.java,像這樣:

javac -cp . Circle.java CircleDriver.java 
0

你是第一個編制的第一個文件,這意味着第二檔圈尚未編譯。嘗試編譯第一個和第一個第二個。

+0

我已經嘗試過,它仍然無法正常工作。我甚至清理了我的文件夾,以確保舊版本不會被指向。我又開始嘗試重新編譯第二個文件,然後重新編譯第一個文件。雖然同樣的問題。 – bshea315

+0

嘗試將兩個文件一起編譯。 javac Circle.java CircleDriver.java – djames

+0

謝謝。這種方法奏效。我非常感謝幫助。 – bshea315

1

您是否將目錄標記爲源文件夾?他們也是在同一個包裏?如果沒有,你應該使用導入。 我已經在相同的包中複製了你的類,它工作正常。輸出是:

I am a circle 
my color is green 
my radius is 10.0 
circle area: 314.159 
circle circumference: 62.8318 
0

您的代碼看起來很好,所以我假設的文件或者在不同的包,或者編譯器無法看到Circle.java類。

解決的第一個問題是:

  1. 移動兩個類到同一包中。他們都必須有頂部的同一個包聲明(如package com.mycompany.myapp;

  2. 導入循環類:import path.to.circle.clazz.Circle;

  3. 使用完全合格的名稱:如果是編譯器path.to.Circle circle = new path.to.Circle();

,您將需要使用javac命令同時編譯這兩個類:javac -cp . Circle.java CircleDriver.java