2013-10-02 120 views
-1

我在介紹編程類,在我目前正在研究的實驗中,我們必須有兩個類並從一個類中提取方法,「能量」並讓它們運行「能源動力」。 我無法調用方法(testOne,testTwo,testThree)在爲「EnergyDriver」調用另一個類的方法

public class EnergyDriver 

    { 
    public static void main(String [] args) 
    { 

    System.out.println(mass1 + " kiolograms, " + velocity1 + 
        "meters per second: Expected 61250," + " Actual " + kineticE1); 

    System.out.println(mass2 + " kiolograms, " + velocity2 + 
        "meters per second: Expected 61250," + " Actual " + kineticE2); 

    System.out.println(mass3 + " kiolograms, " + velocity3 + 
        "meters per second: Expected 61250," + " Actual " + kineticE3); 

    } 
    } 


    public class Energy 

{ 
     public static void main(String [] args) 
    { 


    public double testOne; 
    { 
double mass1; 
double velocity1; 
double holderValue1; 
double kineticE1; 

mass1 = 25; 
velocity1 = 70; 

holderValue1 = Math.pow(velocity1, 2.0);  
kineticE1 = .5 *holderValue1 * mass1; 

} 

    public double testTwo; 
    { 
double mass2; 
double velocity2; 
double holderValue2; 
double kineticE2; 

mass2 = 76.7; 
velocity2 = 43; 

holderValue2 = Math.pow(velocity2, 2.0);  
kineticE2 = .5 *holderValue2 * mass2; 


} 

    public double testThree; 
    { 
double mass3; 
double velocity3; 
double holderValue3; 
double kineticE3; 

mass3 = 5; 
velocity3 = 21; 

holderValue3 = Math.pow(velocity3, 2.0);  
kineticE3 = .5 *holderValue3 * mass3; 


} 
} 
+0

你可以解析'能量'類到只是你試圖調用'EnergyDriver'方法的地方(反之亦然,無論是稱其他)。 – nhgrif

+0

請格式化您的代碼塊,就好像您將其轉換爲教授一樣。 – ChiefTwoPencils

回答

0

Java程序具有切入點,那就是通過主要方法。 因此,在單個項目中,只有一個類應具有主要方法,編譯器在運行時會查找該方法。
請記住,靜態方法無法訪問非靜態方法,因此main是靜態的,因此無法訪問testone二,三,除非您創建該類型的對象。在主要方法中,您可以讓Energy e = new Energy()訪問那些未使用關鍵字static聲明的方法,如e.testone()


但需要注意,非靜態方法可以通過Classname.Method名訪問靜態方法,因爲關鍵字static要求,只有這個方法/變量的一個副本存在,因此我們並不需要一個對象來訪問它,因爲只有一個副本存在。

我建議觀看Lynda.com上的Java視頻或閱讀Java Head First和Java How To Program(Deitel,Deitel)書籍,以增強您的Java知識,並提供大量練習以增強您的知識。
還有很多像這樣的其他問題搜索他們

1

必須只有一個類中的任何一個主要方法。要調用另一個類的方法,您可以創建一個對象,該類調用它們各自的方法。另一種方法是保持調用方法爲靜態,以便通過Classname.Methodname訪問該方法。

public class EnergyDriver 
{ 
    public static void main(String [] args) 
    { 
    Energy energy=new Energy(); 
     System.out.println(mass1 + " kiolograms, " + velocity1 + 
       "meters per second: Expected 61250," + " Actual " + energy.testOne()); 

     System.out.println(mass2 + " kiolograms, " + velocity2 + 
       "meters per second: Expected 61250," + " Actual " + energy.testTwo()); 

     System.out.println(mass3 + " kiolograms, " + velocity3 + 
       "meters per second: Expected 61250," + " Actual " + energy.testThree()); 

} 
} 
class Energy 
{ 

public double testOne() 
{ 
    double mass1; 
    double velocity1; 
    double holderValue1; 
    double kineticE1; 

    mass1 = 25; 
    velocity1 = 70; 

    holderValue1 = Math.pow(velocity1, 2.0);  
    kineticE1 = .5 *holderValue1 * mass1; 

    return kineticE1; 
} 

    public double testTwo() 
{ 
double mass2; 
double velocity2; 
double holderValue2; 
double kineticE2; 

mass2 = 76.7; 
velocity2 = 43; 

holderValue2 = Math.pow(velocity2, 2.0);  
kineticE2 = .5 *holderValue2 * mass2; 

return kineticE2; 
} 

public double testThree() 
{ 
double mass3; 
double velocity3; 
double holderValue3; 
double kineticE3; 

mass3 = 5; 
velocity3 = 21; 

holderValue3 = Math.pow(velocity3, 2.0);  
kineticE3 = .5 *holderValue3 * mass3; 

return kineticE3; 
} 
} 

您可以通過此手機代碼獲取Kinetic Engergy 1,2,3的價值。

您也可以使用下面的代碼,它將只使用一種方法通過給出不同的參數來計算不同的值。

public class EngergyDriver 
{ 
    public static void main(String [] args) 
    { 
    Energy energy=new Energy(); 
    double mass=25; 
    double velocity=70;   
     System.out.println(mass+ " kiolograms, "+velocity+"meters per second: Expected 61250," + " Actual " + energy.testOne(mass,velocity)); 

    } 
} 
    class Energy 
{ 

public double testOne(double mass, double velocity) 
{ 
    double mass1; 
    double velocity1; 
    double holderValue1; 
    double kineticE1; 

    mass1 = 25; 
    velocity1 = 70; 

    holderValue1 = Math.pow(velocity1, 2.0);  
    kineticE1 = .5 *holderValue1 * mass1; 

    return kineticE1; 
} 

}