所以我有一个项目来编写一个程序,接受有关钻石的信息并对它们进行比较。以下是提示的相关部分:
编写方法compareTo(),以便首先通过carot,然后通过清晰度或颜色来订购钻石,以特定钻石为准。由于有23个等级的颜色,但只有11个等级的清晰度,因此前两个颜色等级的等级与第一等级的清晰度相同,接下来的两个颜色等级等级等级为二等级的清晰度,依此类推。为了清楚起见,在比较代码时,您需要一系列if语句。
我错过了关于界面和比较()的东西的讲座,但看着我隐约明白的讲义。这是我到目前为止所得到的:enter code here
public class Diamond {
String stockNumber;
double carot;
String clarity;
char color;
String cut;
public Diamond(String startStockNumber, double startCarot, String startClarity, String startCut) {
stockNumber = startStockNumber;
carot = startCarot;
clarity = startClarity;
cut = startCut;
}
String getStock() {
return this.stockNumber;
}
double getCarot() {
return this.carot;
}
String getClarity() {
return this.clarity;
}
char getColor(){
return this.color;
}
String getCut() {
return this.cut;
}
void tooString(){
System.out.println(this+" is stock number "+this.stockNumber+" a "+this.carot+" carot diamond with "+this.clarity+" and a "+this.cut+" cut.");
}
int compareTo(Diamond other) {
if (this.carot<other.carot){
return -1;
}
else if (this.carot>other.carot){
return 1;
}
else{
}
}
}
答案 0 :(得分:0)
所以,你正在写一个compareTo()
函数。那会订购:
第一个很容易。
对于第二个,你所要做的就是转换Clarity&amp;将颜色转换为数值,使颜色/清晰度权衡为简单的数字“max()”操作。然后你将这两个的max()与其他钻石的max()进行比较。
您可以将这些位分解为几个函数:
protected int getColorValue(); // you implement this
protected int getClarityValue(); // you implement this
protected int getColorOrClarityValue() {
int result = Math.max( getColorValue(), getClarityValue());
return result;
}
因此:
public int compareTo (Diamond o) {
int comp = Double.compare( getWeight(), o.getWeight());
if (comp != 0)
return comp;
comp = Integer.compare( getColorOrClarityValue(), o.getColorOrClarityValue());
return comp;
}
这应该很容易提供一个干净的解决方案。
答案 1 :(得分:0)
您可以执行以下两项操作来实现您提到的订单功能。
使类钻石工具界面 Comparable
public class Diamond implements Comparable
使用上面提到的 Thomas 在compareTo
方法中创建自己的订单功能。