Java 对对象数组进行排序,然后使用if-else对setText进行排序
我已经用双值对数组进行了排序Java 对对象数组进行排序,然后使用if-else对setText进行排序,java,arrays,if-statement,arraylist,Java,Arrays,If Statement,Arraylist,我已经用双值对数组进行了排序 Arrays.sort(banding); 然后我想用具有特定字符串值“CUKUP”的最高值设置text。如果它不是“CUKUP”,那么它必须是“LEBIH”,并且我不希望任何“LEBIH”字符串值作为输出 if (banding[6].getKetTotal().equals("CUKUP")) { untungtertinggi.setText(Double.toString(banding[6].harga));
Arrays.sort(banding);
然后我想用具有特定字符串值“CUKUP”的最高值设置text。如果它不是“CUKUP”,那么它必须是“LEBIH”,并且我不希望任何“LEBIH”字符串值作为输出
if (banding[6].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[6].harga));
} else if (banding[6].getKetTotal().equals("LEBIH")) {
if (banding[5].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[5].harga));
}
}else if (banding[5].getKetTotal().equals("LEBIH")) {
if (banding[4].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[4].harga));
}
}else if (banding[4].getKetTotal().equals("LEBIH")) {
if (banding[3].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[3].harga));
}
}else if (banding[3].getKetTotal().equals("LEBIH")) {
if (banding[2].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[2].harga));
}
}else if (banding[2].getKetTotal().equals("LEBIH")) {
if (banding[1].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[1].harga));
}
}else if (banding[1].getKetTotal().equals("LEBIH")) {
if (banding[0].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[0].harga));
}
}
这种编码仍然是错误的,因为当所有数组都有字符串值“CUKUP”时,它不会将最高的双精度值作为输出如果检查失败,则不清楚应该输出什么,因此我猜测
0.0
,但它可以调整
if (banding[6].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[6].harga));
} else if (banding[6].getKetTotal().equals("LEBIH")) {
if (banding[5].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[5].harga));
}
}else if (banding[5].getKetTotal().equals("LEBIH")) {
if (banding[4].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[4].harga));
}
}else if (banding[4].getKetTotal().equals("LEBIH")) {
if (banding[3].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[3].harga));
}
}else if (banding[3].getKetTotal().equals("LEBIH")) {
if (banding[2].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[2].harga));
}
}else if (banding[2].getKetTotal().equals("LEBIH")) {
if (banding[1].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[1].harga));
}
}else if (banding[1].getKetTotal().equals("LEBIH")) {
if (banding[0].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[0].harga));
}
}
如果我遵循OP的逻辑,该方法可以压缩为一个循环,从而减少检查量。数组banding
的特定对象类型没有指定,因此我随意使用banding
作为对象类型——这可能并不完全正确
注意:假设数组已正确排序
Arrays.sort(banding);
setText(banding);
void setText(Banding[] banding) {
final int loc = banding.length - 1;
// if the highest is what we want, set and return
if (banding[loc].getKekTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[loc].harga));
return;
}
// we run until one before the start of the array, as we check for the
// previous value; if we meet the criteria of [i] being LEBIH, and [i - 1]
// being CUKUP, then we set the value and return
for (int i = loc; i > 0; --i) {
if (banding[i].getKekTotal().equals("LEBIH") &&
banding[i - 1].getKetTotal().equals("CUKUP")) {
untungtertinggi.setText(Double.toString(banding[i - 1].harga));
return;
}
}
// no specific value found
untuntertinggi.setText(Double.toString(0.0));
}
如果已经对数组进行了排序,为什么不遍历数组(可能是向后),并检查值是否为
CUKUP
或LEBIH
。然后你可以简化逻辑。你确定排序按预期进行吗?我问的是,如果所有项目都包含CUKUP,那么第一个if应该输出正确的值吗?@JoakimDanielson当我对数组进行排序并检查它是否正确时。但是当我设置一个if条件时,它并没有像预期的那样工作