从 类 继承以获得输出。

Inheriting from classes to get outputs.

我已经为这个问题苦苦挣扎了数周。我无法获得计算结果。我的计算 class 中包含所有方法,主 class 中包含用户输入。此外,在 Main class 的末尾,我创建了一个对象来继承 Calculating class 中的所有计算,以根据输入获得结果。这没用。非常感谢任何建议。

//正在计算Class

public class Calculating { //Calculation class

//Declaring fields - Inputs
public double totalImpulse ;
public double averageImpulse;
public double timeEjectionChargeFires;
public double massEmptyVehicle;
public double engineMass;
public double fuelMass; 

//Declaring variables for outputs
public double theAverageMassOfTheVehicle;

public Calculating() { //Constructor (inputs)

    this.totalImpulse  = totalImpulse;
    this.averageImpulse = averageImpulse;
    this.timeEjectionChargeFires =timeEjectionChargeFires;
    this.massEmptyVehicle = massEmptyVehicle;
    this.engineMass = engineMass;
    this.fuelMass = fuelMass;

  }
//Accessors and Mutators

//Methods used to calculate Average mass of the vehicle
public double theAverageMassOfTheVehicle() {
return massEmptyVehicle + ((engineMass + (engineMass - fuelMass) )/ 2); //Formula to calculate Average mass 
}


//Setters
public void setTheAverageMassOfTheVehicle(double theAverageMassOfTheVehicle) {
this.theAverageMassOfTheVehicle = theAverageMassOfTheVehicle;
}//method

//Getters 
public double getTheAverageMassOfTheVehicle() {
return theAverageMassOfTheVehicle;
}

}

//高手class

    public class Master extends Calculating{ //Master class

    public static void main( String args[] ) //Standard header for main method
    {

    UserEntry input = new UserEntry(); //Creating object from UserEntry class

    //User entry for Total Impulse with exception handling
    Double totalImpulse = null; 
    while(totalImpulse==null){
    System.out.print("\nPlease enter Total impulse delivered: "); //System print line for input 
    try { 
    totalImpulse= input.gettotalImpulse(); //Instantiates totalImpulse from UserEntry scanner 
        }
    catch(Exception e){ //There was something wrong with the input. 
    System.out.println("\nInvalid entry, please enter a number !"); //Error message upon wrong input
        }
    }


    //User entry for Average Impulse with exception handling
    Double averageImpulse = null; 
    while(averageImpulse==null){
    System.out.print("Please enter Average Impulse delivered: "); //System print line for input 
    try { 
    averageImpulse= input.getaverageImpulse(); //Instantiates averageImpulse from UserEntry scanner 
        }
    catch(Exception e){ //There was something wrong with the input. 
    System.out.println("\nInvalid entry, please enter a number !"); //Error message upon wrong input
        }
    }


    //User entry for Time Ejection charge fires with exception handling
    Double timeEjectionChargeFires = null; 
    while(timeEjectionChargeFires==null){
    System.out.print("Please enter Time ejection charge fires: "); //System print line for input 
    try { 
    timeEjectionChargeFires= input.gettimeEjectionChargeFires(); //Instantiates timeEjectionChargeFires from UserEntry scanner 
        }
    catch(Exception e){ //There was something wrong with the input. 
    System.out.println("\nInvalid entry, please enter a number !"); //Error message upon wrong input
        }
    }

    //User entry for Mass of the empty vehicle with exception handling
    Double massEmptyVehicle = null; 
    while(massEmptyVehicle==null){
    System.out.print("Please enter The mass of the empty vehicle: "); //System print line for input 
    try { 
    massEmptyVehicle= input.getmassEmptyVehicle(); //Instantiates massEmptyVehicle from UserEntry scanner 
        }
    catch(Exception e){ //There was something wrong with the input. 
    System.out.println("\nInvalid entry, please enter a number !"); //Error message upon wrong input
        }
    }

    //User entry for Mass of the engine with exception handling
    Double engineMass = null; 
    while(engineMass==null){
    System.out.print("Please enter The mass of the engine: "); //System print line for input 
    try { 
    engineMass= input.getengineMass(); //Instantiates engineMass from UserEntry scanner 
        }
    catch(Exception e){ //There was something wrong with the input. 
    System.out.println("\nInvalid entry, please enter a number !"); //Error message upon wrong input
        }
    }

    //User entry for Fuel mass with exception handling
    Double fuelMass = null; 
    while(fuelMass==null){
    System.out.print("Please enter The mass of the fuel: "); //System print line for input 
    try { 
    fuelMass= input.getfuelMass(); //Instantiates fuelMass from UserEntry scanner 
        }
    catch(Exception e){ //There was something wrong with the input. 
    System.out.println("\nInvalid entry, please enter a number !"); //Error message upon wrong input
        }
    }


        //Outputs based on user inputs
    Calculating Master = new Calculating();  //Creates object of Calculating      class

    System.out.println("\nThe average mass of the vehicle: " +Master.theAverageMassOfTheVehicle() /1000); 
   }

    }

问题出在你的构造函数上。

public Calculating() { //Constructor (inputs)

    this.totalImpulse  = totalImpulse;
    this.averageImpulse = averageImpulse;
    this.timeEjectionChargeFires =timeEjectionChargeFires;
    this.massEmptyVehicle = massEmptyVehicle;
    this.engineMass = engineMass;
    this.fuelMass = fuelMass;
}

您从不传递任何参数,那么您如何初始化它们?

更好的构造函数可以是:

public Calculating(double totalImpulse, double averageImpulse, 
      double timeEjectionChargeFires, double massEmptyVehicle, 
      double engineMass, double fuelMass) {

    this.totalImpulse  = totalImpulse;
    this.averageImpulse = averageImpulse;
    this.timeEjectionChargeFires = timeEjectionChargeFires;
    this.massEmptyVehicle = massEmptyVehicle;
    this.engineMass = engineMass;
    this.fuelMass = fuelMass;
}

您的 Master class 不必扩展 Calculating

您在 main 中所要做的就是创建一个 Calculating 对象,该对象使用您从输入中获取的参数进行初始化。

Calculating calculations = new Calculating(totalImpulse,averageImpulse,timeEjectionChargeFires,massEmptyVehicle,engineMass,fuelMass);

那你可以打电话给calculations.theAverageMassOfTheVehicle()