Java 当我 运行 在我的代码中使用这个方法时,有时它会显示完整的结果,有时则不会

Java When I run this method in my code, sometimes it shows full result, other times it doesn't

如果这个函数是运行:

public static void maximizeweight(int[] weight, int[] A){
        Random r = new Random();
        int random = r.nextInt(A.length);
        for(int i=0;i<A.length;i++){
            while(totalweight(weight,A) < 630){
                if(A[random]==0)
                    A[random] += 1;
            }
        }
    }

输出有时会中断一点或冻结 eclipse,完全随机,有时它能够给出整个结果,有时它不显示所需结果的最后一部分。

如果您的 A[random] != 0totalweight() returns < 630,则 while 循环将是无限的。一种可能的解决方法(也是我认为您需要的一种方法)是将 int random = r.nextInt(A.length); 移动到 while 循环中。

public static void maximizeweight(int[] weight, int[] A){
        Random r = new Random();
        for(int i=0;i<A.length;i++){
            while(totalweight(weight,A) < 630){
                int random = r.nextInt(A.length);
                if(A[random]==0)
                    A[random] += 1;
            }
        }
    }

注意:如果 weight 数组的总和仍然 < 630,这仍然会无限循环。因此您需要额外检查。