从引擎 class 获取可变数据在 Java 中不起作用

Getting variable data from an Engine class isn't working in Java

我的项目是组合,其中一辆卡车有一个引擎,可以使用参数调用到控制台:

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

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

我想不出如何让我的第二个 class 获取 engineStatus() 并将变量正确地插入构造函数以用于上面的控制台命令代码。我的主要错误是找不到 engineStatus 变量。

我也承认我的代码对于引擎布尔表达式是错误的,并且无法找到一个好的替代方法来为 engineStatus() 提供一个 On 或 Off 变量,这取决于 engineStart() 和 engineStop() 是否 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;
}
}

任何关于编码的反馈或关于如何实施的指示都将不胜感激。

引擎中的很多代码 class 似乎是多余的。我正在对代码进行大量更改。看看是不是你想要的

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

此引擎 class 只有 3 个布尔变量:engineStart、engineStop、engineStatus。如果 engineStart = true,则 engineStatus = true。否则 engineStatus = false.

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

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

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

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