我的项目是组合,卡车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;
}
}
任何关于编码的反馈或关于如何实施的指示都将受到赞赏。
答案 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();
}
如果这不是您想要的,请随时在评论中提问。