我的数组包含随机数,以下方法成功返回它的两个最大值:
int[] a = {a1 = (int) ((Math.random() * 10) + 1), a2 = (int) ((Math.random() * 10) + 1), a3 = (int) ((Math.random() * 10) + 1)};
public static int[] showtwolargestints(int a[]) { // returns two largest integers of my array
int largestA = Integer.MIN_VALUE, largestB = Integer.MIN_VALUE;
for(int value : a) {
if(value > largestA) {
largestB = largestA;
largestA = value;
} else if (value > largestB) {
largestB = value;
}
}
return new int[] { largestA, largestB };
}
我现在要做的是,在我的GUI中按下按钮后,我想显示某些标签/图片,具体取决于我的两个最大整数。 由于我是初学者,我真的不知道比较它们的好方法: 这是我在GUI类/ JButton方法中的代码:
public void buttonmethod() {
try {
if (Arrays.toString(myobject.showtwolargestints(myobject.a)).equals("[10, 10]")) {
label1.setVisible(true);
Icon i1 = new ImageIcon("pics/ten.png");
label1.setIcon(i6);
label2.setVisible(true);
Icon i2 = new ImageIcon("pics/ten.png");
label2.setIcon(i7);
} // end of if
else if (Arrays.toString(myobject.showtwolargestints(myobjects.a)).equals("[10, 9]")) {
label1.setVisible(true); // and so on...
我确实得到了结果,但是在按下我的按钮之后,我的程序每启动几次就不能正常工作了 它要么只显示一个标签,要么根本没有变化:l
答案 0 :(得分:1)
使用toString
做一些事情效率很低(特别是如果你重复计算最大的元素数组及其字符串表示)并且很笨拙。
直接比较数组元素:
int[] twoLargest = myobject.showtwolargestints(myobject.a);
if (twoLargest[0] == 10 && twoLargest[1] == 10) {
// ...
} else if (twoLargest[0] == 10 && twoLargest[1] == 9) {
// ...
}
但看起来您可以通过将文件名放入数组来简化代码:
String[] filenames = {"pics/zero.png", ... "pics/ten.png"};
然后只是说:
label1.setVisible(true);
Icon i1 = new ImageIcon(filenames[twoLargest[0]]);
label1.setIcon(i1);
label2.setVisible(true);
Icon i2 = new ImageIcon(filenames[twoLargest[1]]);
label1.setIcon(i2);
答案 1 :(得分:0)
直接比较它们对我来说很好。
是否有一种干净的方法将数组中的其余整数加在一起?我的计划似乎对我的尝试不满意。
我试过的是:
int sum = 0;
for( int i : maxis) {
sum += i;
}