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

Java当我在代码中运行这个方法时,有时它会显示完整的结果,有时它不会';T,java,function,console,Java,Function,Console,如果此功能正在运行: 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){

如果此功能正在运行:

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;
            }
        }
    }
publicstaticvoidmaximizewight(int[]weight,int[]A){
随机r=新随机();
int random=r.nextInt(A.length);

对于(int i=0;i如果您的
A[random]!=0
并且您的
totalweight()
返回<630,while循环将是无限的。一个可能的修复方法(我认为您需要的)是在while循环中移动
int random=r.nextInt(A.length);

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;
            }
        }
    }
publicstaticvoidmaximizewight(int[]weight,int[]A){
随机r=新随机();

对于(int i=0;i什么是
totalweight(…)
do?您确实应该首先使用调试器进行一些调试。很可能是由于该方法内部有一个无限循环。请显示整个类或totalweight方法。谢谢!如果[random],显然可能存在死循环!=0和totalweight<630 while循环永远不会结束..我认为这就是问题所在将
while
循环移到for循环之外;)