【发布时间】:2014-03-05 05:42:03
【问题描述】:
我正在尝试交换要交换的数组位置,但它不起作用。无论我做什么,我都无法交换它们,我知道这与我编写 if 语句的方式有关。
这是main中的代码:
Comparable[] computerSizes = new Comparable[3];
int a = computerSizes.length - 1;
computerSizes[0] = new Desktop("i5","Desktop",4,1024,250);
computerSizes[1] = new Desktop("i3","Desktop",6,512,350);
computerSizes[2] = new Laptop(15.6,"i3","Laptop",4,0,750);
for (int i = 0; i < a;i++) {
if(computerSizes[i].compareTo(computerSizes[i+1]) == 1){
computerSizes[i] = computerSizes[i+1];
computerSizes[i+1] = computerSizes[i];
}//end if
System.out.println(computerSizes[i]);
}//end for
这里是相关的 compareTo 方法代码:
public int compareTo(Comparable c)
{
Computer a = (Computer)c;
if (this.cost == a.cost)
return 0;
else if (this.cost > a.cost)
return 1;
else
return -1;
}
0 处的索引大于 1 处的索引,但为了澄清起见,我将包括相关公式:
cost = 150 + 6.50 * super.ram + 0.15 * super.hdd + 0.48 * super.vRam;
Desktop(PROCESSOR,TYPE,RAM,VRAM,HDD SPACE):这就是参数的意思。
【问题讨论】:
-
认真的吗?你不能那样交换!!
-
乍一看很疯狂。我忘了“=”是一条双向街道。