从Engine类获取可变数据不适用于Java

时间:2017-01-17 11:38:02

标签: java composition

我的项目是组合,卡车HAS-A引擎可以使用参数调用控制台:

(注意,engineStatus表示两个参数,它们将决定参数,IE,一个或另一个将被输入; On / Off或True / False)

PrimaTruck truck = new PrimaTruck(150, OUColour.RED, (engineStatus));

我想不出如何让我的第二个类获取engineStatus()并将变量正确插入到构造函数中,以便与上面的控制台命令代码一起使用。我的主要错误是它无法找到engineStatus变量。

我也承认我的代码对于引擎布尔表达式是错误的,并且无法找出一个很好的替代方法,根据engineStart()和engineStop()是否为On / Off,为engineStatus()提供On或Off变量,从而给出一个可以在PrimaTrucks()构造函数参数中输入的值。

PrimaTruck.Java

import ou.*;
 /**
 * Write a description of class PrimaTruck here.
 */
public class PrimaTruck{
 // instance variables - replace the example below with your own
    private int topSpeed;
    private OUColour colour;
    public Engine engineStatus;

  /**
  * Constructor for objects of class PrimaTruck
  * Initialise instance variables 
  */
public PrimaTruck(int topSpeed, OUColour colour, Engine engineStatus){

     this.topSpeed = topSpeed;
     this.colour = colour;
     this.engineStatus = engineStatus;
}

public void setColour(OUColour aColour){
     this.colour = aColour;
}

public OUColour getColour(){
  return colour;
}

public int getTopSpeed(){
  return topSpeed;
}
}

Engine.Java

/**
 * Write a description of class Engine here.
 */
public class Engine{

// instance variables
   public Boolean engineStart;
   public Boolean engineStop;
   public String engineStatus;
   private Boolean status;

/**
* Constructor for objects of class Engine
*/
public Engine(String engineStatus){

// initialise instance variables
    this.engineStart = engineStart;
    this.engineStop = engineStop;
    this.engineStatus = engineStatus;
    this.status = status;
}

public Boolean status(){    
    if (engineStart == true){
     status = engineStart;
    }else if (engineStop = true){;
     status = engineStop;
  }
     return this.status;
}

public Boolean getEngineStart(){
     return engineStart; 
}

public void setEngineStart(){
     this.engineStop = false;
     this.engineStart = true;
}

public Boolean getEngineStop(){
     return engineStop; 
}

public void setEngineStop(){
     this.engineStart = false;
     this.engineStop = true;
}

public void setEngineStatus(String aStatus){
     this.engineStatus = aStatus;
} 

public String getEngineStatus(){
     return engineStatus;
}
}

任何关于编码的反馈或关于如何实施的指示都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

Engine类中的很多代码似乎都是多余的。我对代码进行了很多更改。看看这是否是你想要的。

public class Engine{

// instance variables
public boolean engineStart;
public boolean engineStop;
public boolean engineStatus;

/**
* Constructor for objects of class Engine
*@param1 - true if engine is started
*@param2 - true if engine is stopped
*@param3 - true if engine is on, else false
*/
public Engine(boolean engineStart, boolean engineStop, boolean engineStatus){

// initialise instance variables
this.engineStart = engineStart;
this.engineStop = engineStop;
this.engineStatus = engineStatus;

}

public boolean getEngineStart(){
     return engineStart; 
}

public void setEngineStart(){
 this.engineStop = false;
 this.engineStart = true;
 setEngineStatus(true);
}

public boolean getEngineStop(){
 return engineStop; 
}

public void setEngineStop(){
 this.engineStart = false;
 this.engineStop = true;
 setEngineStatus(false);
}

public void setEngineStatus(boolean engineStatus){

 this.engineStatus = engineStatus;

} 

public String getEngineStatus(){
 return engineStatus;
}
}

这个Engine类只有3个布尔变量:engineStart,engineStop,engineStatus。如果engineStart = true,则engineStatus = true。否则engineStatus = false。

我希望这是你想要实现的功能。现在,您需要在创建Engine对象时传入3个布尔变量。

现在在卡车类中进行以下更改:

public class PrimaTruck{
// instance variables - replace the example below with your own
private int topSpeed;
private OUColour colour;
public boolean engineStatus;

/**
* Constructor for objects of class PrimaTruck
* Initialise instance variables 
*/
public PrimaTruck(int topSpeed, OUColour colour, Engine engine){

 this.topSpeed = topSpeed;
 this.colour = colour;
 this.engineStatus = engine.getEngineStatus();
}

如果这不是您想要的,请随时在评论中提问。