Как правильно получить индекс из массива и сделать некоторую операцию с этим? - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь найти здесь сумму квадрата каждого элемента массива. В цикле while(no>-1) для каждой итерации я обнаружил элемент с наибольшим значением. После этого я уменьшил это значение на 1.

Вот в чем дело. Достигнув точки, где в массиве осталось несколько максимальных значений, вычитание не сработало. Буду очень признателен, если вы, ребята, сможете мне помочь. Спасибо.

import java.util.Arrays;
class NoOvertime {
    public int noOvertime(int no, int[] works) {
        int result = 0;
        int[] temp = works;
        int index =0;
        int maxval =0;
        while(no>-1){
            maxval = Arrays.stream(temp).max().getAsInt();
            System.out.println(maxval);
            index =Arrays.asList(temp).indexOf(maxval)+1;
            temp[index]= temp[index]-1;
            no--;
        }
        for(int i=0;i<works.length;i++){
            result += works[i]*works[i];
        }
        return result;
    }
    public static void main(String[] args) {
        NoOvertime c = new NoOvertime();
        int []test = {7,5,3};
        System.out.println(c.noOvertime(4,test));
    }
}

что я получаю после выполнения кода это:

7
6
5
5
5
38

1 Ответ

0 голосов
/ 28 апреля 2018

Arrays.asList(temp) создает List<int[]> (содержит ровно 1 элемент int []), а не List<Integer>. Следовательно, ваш index всегда равен 0, потому что indexOf всегда будет возвращать -1.

...