如何在一个数组中构造多个输出的数组(Java)

时间:2017-11-13 15:57:10

标签: java arrays algorithm

我的代码基本上遍历一个数组,找到最大值,然后找到与之相关的索引。我遇到的问题是我希望一个数组中的索引而不是多个。

例如(实际输出):

[1] [2] [3] [4]

通缉输出:[1,2,3,4]

这是我的代码:

 int index;
    int num = myArray[0];
    for (int i = 0; i < myArray.length; i++) {
        if (num < myArray[i]) {
            num = myArray[i];
        }
    }
    for (int j = 0; j < myArray.length; j++) {
        if(num == myArray[j]){
               index = j;
               System.out.println("[" + j + "]");
        }
    }

我不知道如何在不重做所有代码的情况下执行此操作。感谢。

2 个答案:

答案 0 :(得分:1)

int index;
int num = myArray[0];
for (int i = 0; i < myArray.length; i++) {
    if (num < myArray[i]) {
        num = myArray[i];
    }
}
System.out.print("[");
int count = 0;
for (int j = 0; j < myArray.length; j++) {
    if(num == myArray[j]){
           index = j;
           if(count++ > 0)
             System.out.print(",");
           System.out.print(j);
    }
}
System.out.println("]");

答案 1 :(得分:0)

int maxValue = myArray[0];
int countMaxValues = 1;
for (int i = 1; i < myArray.length; i++) {
    if (myArray[i] > maxValue) {
        maxValue = myArray[i];
        countMaxValues = 1;
    }
    else if (myArray[i] == maxValue) {
        countMaxValues++;
    }
}

int maxValueIndices = new int[countMaxValues];
int i = 0;
for (int j = 0; j < myArray.length; j++) {
    if(myArray[j] == maxValue){
        maxValueIndices[i++] = j;
    }
}

System.out.println(Arrays.toString(maxValueIndices));