-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;


 }
}
4

2 回答 2

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;
 }

 }
于 2013-10-02T03:11:16.197 回答
0

Java 程序有单一的入口点,那就是通过main方法。因此,在单个项目中,只有一个类应该具有 main 方法,并且当您运行它时编译器会查找该方法。
请记住,静态方法无法访问非静态方法,因此 main 是静态的,因此除非您创建该类型的对象,否则它无法访问 testone 2 或 3。这意味着在 main 方法中,您可以Energy e = new Energy()访问那些未使用关键字 static like 声明的方法e.testone()


但是请注意,非静态方法可以通过Classname.Method名称访问静态方法,因为关键字 static 意味着该方法/变量只存在一个副本,因此我们不需要对象来访问它,因为只存在一个副本。

我建议观看来自 Lynda.com 的 Java 视频或阅读 Java Head First 和 Java How To Program (Deitel,Deitel) 书籍,以提高您的 Java 知识,它们附带大量练习以增强您的知识。
在 SO search for them 上还有很多其他类似的问题

于 2013-10-02T03:51:22.260 回答