2013-10-02 2 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 предполагает, что существует только одна копия этого метода/переменной, поэтому нам не нужен объект для доступа к нему, поскольку существует только одна копия.

Я рекомендую смотреть видео на Java с Lynda.com или читать книги Java Head First и Java How To Program (Deitel, Deitel), чтобы дать вам толчок в знаниях Java, которые они приходят с множеством упражнений, чтобы улучшить ваши знания.
Также есть много других вопросов, подобных этому на SO Искать их

1

Вы должны иметь только один главного метода в любом из класса. Чтобы вызвать метод из другого класса, вы можете создать объект этого класса и вызвать их соответствующий метод. Другой способ заключается в том, чтобы метод вызова был статическим, поэтому вы можете получить доступ к этому методу через Имя класса. Имя метода.

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

} 
Смежные вопросы