如何从数组中正确获取索引并对其进行一些操作?

时间:2018-04-28 13:53:02

标签: java java-stream indexof

我在这里要做的是找到数组中每个元素的平方值之和。在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 :(得分:0)

Arrays.asList(temp)生成List<int[]>(恰好包含1个int []项),而不是List<Integer>。因此,index始终为0,因为indexOf将始终返回-1。