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] != 0
和 totalweight()
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,这仍然会无限循环。因此您需要额外检查。
如果这个函数是运行:
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] != 0
和 totalweight()
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,这仍然会无限循环。因此您需要额外检查。