gpt4 book ai didi

java - 为什么数组索引没有被交换?

转载 作者:行者123 更新时间:2023-12-01 08:05:19 26 4
gpt4 key购买 nike

我正在尝试交换数组位置,但它不起作用。无论我做什么,我都无法让它们交换,我知道这与我编写 if 语句的方式有关。

这是主代码:

  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;

桌面(处理器,类型,RAM,VRAM,HDD SPACE):这就是参数的含义。

最佳答案

线条

computerSizes[i] = computerSizes[i+1];
computerSizes[i+1] = computerSizes[i];

不要做你期望的事情。它首先将 computerSizes[i+1] 的值分配给 computerSizes[i]。那一刻,两人是平等的。然后将 computerSizes[i] 的值分配给 computerSizes[i+1]。最终,两者将相等。

为了交换值,请使用时间变量:

Comparable temp = computerSizes[i];
computerSizes[i] = computerSizes[i+1];
computerSizes[i+1] = temp;

关于java - 为什么数组索引没有被交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com