在if语句中检查Array中的两个返回值

时间:2017-02-18 14:59:44

标签: java arrays if-statement icons

我的数组包含随机数,以下方法成功返回它的两个最大值:

 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

2 个答案:

答案 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;
  }