Java 使用多个类别比较两辆车

Java 使用多个类别比较两辆车,java,comparison,Java,Comparison,嗨,我有一个问题需要帮助!我的问题是,如何对使用多个类别的两辆车使用“比较”案例(例如,用户输入:比较12-->经销商.Class-->汽车.Class-->发动机.Class-->返回结果),并让它返回两辆车的差异,如MPG、马力、燃料类型等!任何解释都会很好,因为在决定寻求帮助之前,我已经尝试了很多次,但都失败了。提前感谢您,如果代码太长,请原谅! 编辑:我希望我的结果是这样的:“1号车比2号车的里程数多,2号车比1号车更新,1号车和2号车都用汽油。” publicstaticvoidmai

嗨,我有一个问题需要帮助!我的问题是,如何对使用多个类别的两辆车使用“比较”案例(例如,用户输入:比较12-->经销商.Class-->汽车.Class-->发动机.Class-->返回结果),并让它返回两辆车的差异,如MPG、马力、燃料类型等!任何解释都会很好,因为在决定寻求帮助之前,我已经尝试了很多次,但都失败了。提前感谢您,如果代码太长,请原谅! 编辑:我希望我的结果是这样的:“1号车比2号车的里程数多,2号车比1号车更新,1号车和2号车都用汽油。”

publicstaticvoidmain(字符串[]args)
{
经销商=新经销商();
System.out.println(“要查看命令列表,请输入命令”);
扫描仪sc=新的扫描仪(System.in);
while(true)
{
字符串输入=sc.nextLine();
String[]parts=input.split(“”);
开关(部件[0])
{
案例“命令”:
System.out.println(“比较[n1][n2]:比较两辆车”);
打破
案例“比较”:
int index1,index2;
index1=整数.parseInt(部分[1]);
index2=整数.parseInt(部分[2]);
System.out.println(“比较”+index1+“&+index2”);
打破
}
}
}
公共级经销商
{
私家车[]辆;
私家车选择私家车;
公共经销商()
{ 
汽车=新车[3];
发动机=新发动机(FuelType.Gas,4670016224);
内饰=新内饰(“棕色”、“栗色”、假、假);
主干=新主干(真、假、真、真,“白色”);
轿车=新车(“现代”,2006,“索纳塔”,2500,“白色”,车型,轿车,发动机,内饰,后备箱);
汽车[0]=汽车;
发动机=新发动机(燃料类型:汽油,47570832517);
内饰=新内饰(“黑色”、“蓝色”、真、假);
中继线=新中继线(真、假、真、假,“黑色”);
汽车=新车(“英菲尼迪”,2016年,“QX50”,38000,“黑色”,轿车车型,发动机,内饰,后备箱);
汽车[1]=汽车;
发动机=新发动机(FuelType.Gas,449967132,26);
内饰=新内饰(“白色”、“米色”、真、真);
主干=新主干(真、假、真、真,“棕色”);
汽车=新车(“丰田”,2010,“花冠”,7845,“红色”,车型。轿车,发动机,内饰,后备箱);
汽车[2]=汽车;
}
公共字符串比较(int index1,int index2)//将此项留空,因为我刚刚意识到我在这里做错了什么。
{  
}
}
公车
{
私人字符串制作;
私人国际年;
私有字符串模型;
私人int价格;
私有字符串颜色;
私有类型;
私人发动机;
私人室内;
私人干线;
私人期权[]期权;
公共汽车(字串品牌、整数年份、字串型号、整数价格、字串颜色、字串类型)
{
make=make;
今年=年;
this.model=模型;
这个价格=价格;
这个颜色=颜色;
this.type=type;
}
公共汽车(字串品牌、整数年份、字串型号、整数价格、字串颜色、字串类型、,
发动机(发动机、车内、行李箱)
{
这(品牌、年份、型号、价格、颜色、类型);
这个。发动机=发动机;
这个。内部=内部;
this.trunk=trunk;
}
字符串比较到(Car otherCar)//可能错误
{
如果(this.year>otherCar.year)返回“更新”;
如果(this.yearotherCar.price)返回“更贵”;
如果(this.priceanotherCar.horsePower)//不起作用,则另一辆车没有符号
return“拥有更大的马力”;//我现在被困在哪里
}
公共浮动getMpg()
{
返回;
}
公共FuelType getFuelType()
{
返回;
}
公共int getCapacity()
{
返回;
}
public int getNoOfCylinders()
{
返回;
}
}
枚举燃料类型{燃气、电动、混合动力、柴油}

另外,我没有添加其他两个类,如Trunk、Interior,因为这似乎不是必需的。

这绝不是最好的答案,但这只是我在为您的问题发布的评论中提到的一个建议

String compareTo (Car otherCar, String property) //Possibly wrong
{
    String message;
    if(property == "MPG") {
      if(this.mpg > otherCar.mpg) return "some message";
      if(this.mpg < otherCar.mpg) return "some message";
    else if(property == "year") {
      if (this.year > otherCar.year) return "Newer";
      if (this.year < otherCar.year) return "Older";
    }
    else if(property == "price") {
      if (this.price > otherCar.price) return "More expensive";
      if (this.price < otherCar.price) return "Is cheaper"; 
    }
  }

}

但是这里的问题是“你真的需要这个方法中的full car对象吗?”?不,你可能只需要汽车本身的磁场

我认为您的compareTo方法没有任何问题(尽管您需要私有字段的getter)。你的问题可能有点不清楚。若你们想要不同,也许你们想要传递一个字符串作为参数(例如:“mpg,horsepower,等等”),然后有一个你们想要比较的case语句。我通过一个If语句得到你们所做的,我犹豫了,但这看起来是一个更好的选择。另外,对于If(Property==“MPG”)行,M
String compareTo (Car otherCar, String property) //Possibly wrong
{
    String message;
    if(property == "MPG") {
      if(this.mpg > otherCar.mpg) return "some message";
      if(this.mpg < otherCar.mpg) return "some message";
    else if(property == "year") {
      if (this.year > otherCar.year) return "Newer";
      if (this.year < otherCar.year) return "Older";
    }
    else if(property == "price") {
      if (this.price > otherCar.price) return "More expensive";
      if (this.price < otherCar.price) return "Is cheaper"; 
    }
  }

}
String compareByPrice(Car otherCar) {

}

String compareByYear(Car otherCar) {

}

// ... and so forth