所以我有4类汽车发动机,变速箱,底盘和汽车本身的编码如下:
public class Chassis {
public double m_Cprice;
public Chassis(double m_Cprice) {
this.m_Cprice = m_Cprice;
}
public double getChassisPrice() {
return m_Cprice;
}
public void setChassisPrice(double m_Cprice){
this.m_Cprice = m_Cprice;
}
}
对于机箱:
public class Transmission {
public double m_Tprice;
public Transmission(double m_Tprice){
this.m_Tprice = m_Tprice;
}
public double getTransmissionPrice() {
return m_Tprice;
}
public void setTransmissionPrice(double m_Tprice){
this.m_Tprice = m_Tprice;
}
}
对于引擎:
public class Engine {
public double m_Eprice;
public Engine(double m_Eprice){
this.m_Eprice = m_Eprice;
}
public double getEnginePrice() {
return m_Eprice;
}
public void setEnginePrice(double m_Eprice){
this.m_Eprice = m_Eprice;
}
}
最后是为了汽车:
public final class Car {
public double m_baseprice;
public Chassis m_Cprice;
public Engine m_Eprice;
public Transmission m_Tprice;
public double getBaseprice() {
return m_baseprice;
}
public void setBasePrice(double m_baseprice){
this.m_baseprice = m_baseprice;
}
public Car(double Baseprice,double Chassis, double Engine, double Transmission) {
setBasePrice(Baseprice);
m_Cprice = new Chassis(Chassis);
m_Eprice = new Engine(Engine);
m_Tprice = new Transmission(Transmission);
}
public Chassis getM_Cprice() {
return m_Cprice;
}
public void setM_Cprice(Chassis m_Cprice) {
this.m_Cprice = m_Cprice;
}
public Engine getM_Eprice() {
return m_Eprice;
}
public void setM_Eprice(Engine m_Eprice) {
this.m_Eprice = m_Eprice;
}
public Transmission getM_Tprice() {
return m_Tprice;
}
public void setM_Tprice(Transmission m_Tprice) {
this.m_Tprice = m_Tprice;
}
当我尝试调用此应用程序的构造函数时,一切正常,我的代码中没有错误,但是当我要求输出任何东西都没有输出时,我无法使用构造函数中的边界正确构建我的汽车是新的汽车(3000,500,1000,2000)使应用程序无法正常工作,虽然没有错误指向我正确的方向。
答案 0 :(得分:0)
请留下那可怕的" m _"成员变量的前缀。读起来太可怕了。
您需要了解更多Java。第一步:覆盖所有类中的toString()
以输出价格。您所看到的是默认输出:每个类的参考值。
Double不是钱的好主意。既然你在这里处理大件物品,我建议不要花掉美分,坚持整数和全部美元。
public class Engine {
private int price;
public Engine(int price) {
this.setPrice(price);
}
public int getPrice() {
return price;
}
public void setPrice(int price){
if (price <= 0) throw new IllegalArgumentException("price must be positive");
this.price = price;
}
public String toString() {
return String.format("price: %d", this.price);
}
}
我知道你是初学者,但这个设计迫切需要一个界面和一个复合模式:
public interface Sellable {
int getPrice();
void setPrice(int price);
}
现在,您的Car
可以被视为Sellable
个实例的集合。它的价格将是所有Sellables
的总和。
答案 1 :(得分:-1)
代码的整体结构不是很好。我建议如下:
public class CarPart {
private double price;
public Part(final double price) {
this.price = price;
}
public double getPrice() {
return price;
}
public void setPrice(final double price) {
this.price = price;
}
@Override
public String toString() {
return "Price = " + price;
}
}
public class Engine extends CarPart {
public Engine(final double price) {
super(price);
}
}
public class Chassis extends CarPart {
public Chassis(final double price) {
super(price);
}
}
public class Transmission extends CarPart {
public Transmission(final double price) {
super(price);
}
}
public class Car {
private double totalPrice;
private Chassis chassis;
private Engine engine;
private PTransmission transmission;
public Car(final double totalPrice, final Chassis chassis, final Engine engine, final Transmission transmission) {
this.totalPrice = totalPrice;
this.chassis = chassis;
this.engine = engine;
this.transmission = transmission;
}
public double getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(final double totalPrice) {
this.totalPrice = totalPrice;
}
public Chassis getChassis() {
return chassis;
}
public void setChassis(final Chassis chassis) {
this.chassis = chassis;
}
public Engine getEngine() {
return engine;
}
public void setEngine(final Engine engine) {
this.engine = engine;
}
public Transmission getTransmission() {
return transmission;
}
public void setTransmission(final Transmission transmission) {
this.transmission = transmission;
}
}
现在您将能够使用该应用程序:
public class Main {
public static void main(String[] args) {
final Chassis chassis = new Chassis(2000);
final Engine engine = new Engine(3000);
final Transmission transmission = new Transmission(4000);
final Car car = new Car(1000, chassis, engine, transmission);
System.out.println(chassis.toString());
}
}