2012-07-01 47 views
-1

我正在製作一個Java程序,它可以通過給出a,b和c使用二次方程來求解根。不能調用另一個類

下面是主要代碼:

//main file 

class Call 
{ 
     public static void main(String args []) 
    { 
      double a=Double.parseDouble(args[0]); 
      double b=Double.parseDouble(args[1]); 
      double c=Double.parseDouble(args[3]); 

      Receiver r = new Receiver("."); 
      if (r.determine(a,b,c)=true) 
      { 
        double root1=r.Root; 
        double root2=r.Root2; 
        System.out.println("The first root is +root1"); 
        System.out.println("The second root is +root2"); 


      } 
      else 
      { 
        System.out.println("Not a number"); 
      } 
    } 
} 

現在,這裏就是我試圖調用,但不能在類。

class Receiver 
    { 
    public boolean determine(double a, double b, double c) 
    { 
      double value=b*b-4*a*c; 
        if (value<0) 
          return false; 
        else 
          return true; 
    } 

    public double Root(double a, double b, double c) 
    { 
      double value=b*b-4*a*c; 
      double root=(-b+ Math.sqrt(value))/(2*a); 
      return root; 
    } 

    public double Root2(double a, double b, double c) 
    { 
      double value=b*b-4*a*c; 
      double root2=(-b- Math.sqrt(value))/(2*a); 
      return root2; 
    } 
    } 

我確定我已經編譯了Receiver.java。但是,當我編譯Call.java,我得到這個錯誤:

Call.java:14:error:cannot find symbol 
     Receiver r= new Receiver(); 
     symbol: class Receiver 
     location: class Call 
+1

看看爲'package'和Java中'import'關鍵字。 – Dilawar

+0

你在使用任何'IDE'嗎?像** Eclipse **或** NetBeans **? –

+2

這確實看起來像一個導入問題,雖然如果沒有更多的信息就無法確定。但是我會指出,即使這個特定的編譯錯誤是固定的,'double root1 = r.Root;'和'double root2 = r.Root2;'行也不會被編譯。你必須用實際參數調用'Root'和'Root2'。 –

回答

2

請注意,我還沒有發現構造public Receiver(String arg),和你使用它像這樣,你不錯過嗎?

如果你從命令行編譯那些由自己保證,這些步驟:

這些類創建包

// top of Call.java 
package com.mypackage.app; 

// top of Receiver.java 
package com.mypackage.app; 

編譯這些文件,所以創建了包在課堂結構
(這將在當前位置創建文件夾,如/com/mypackage/app/

javac -d . Call.java Receiver.java 

從當前位置運行Call類由它的包名

java com.mypackage.app.Call 
+1

非常感謝!有效! – user1493951

3

要調用Receiver s的一個字符串參數的構造函數,但你Receiver你的代碼發佈不存在這樣的構造函數。

此外,你可以嘗試使類public

0

您需要同時編譯這兩個文件,或者確保編譯器已經傳遞了對Receiver類文件的引用。另外,Receiver中的構造函數不接受字符串參數。

通常認爲將源文件放入軟件包(目錄)是一種很好的做法 - 隨着項目變大,可以更輕鬆地組織它們。例如,在你的情況下,你可以選擇一個包名稱,如「com.myapp.roots」,並把你的源文件放在一個目錄中,比如「myFirstProject/src/com/myapp/roots」。然後從「myFirstProject」目錄下,你應該能夠調用「的javac SRC」來編譯所有的源代碼目錄

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html