在while循环(或for循环)中创建一个数组,然后在外部使用该数组

时间:2017-06-08 18:27:55

标签: java arrays loops

我想要做的是,这不会做,也可能永远不会做,是使用循环创建一个数组,然后在另一个类中调用该数组。什么是最好的方法来解决这个问题。我一直在找一个解决方案而且他们不会编译。谢谢你的帮助。

import java.util.*;
public class Test{

public static void main(String[] args){ 

    Grow t = new Grow();
    ArrayList arr = new ArrayList();
    arr = t.Grow();
    System.out.print(arr);

}
}

public class Grow{
    static int row;
    static int column;

public ArrayList<Integer> poli(){
        while(row < 51 ){
            int r = row;
                while(column < 1){
                    ArrayList<Integer> policy = new ArrayList<Integer>();
                    policy.add(r);
                    policy.add(0);

                }

            column-=1;
            row++;
        }

    return policy;

}

编辑: 新问题。     在线程&#34; main&#34; java.lang.OutOfMemoryError中获取错误异常:Java堆空间     at java.util.Arrays.copyOf(Arrays.java:3210)     at java.util.Arrays.copyOf(Arrays.java:3181)     at java.util.ArrayList.grow(ArrayList.java:261)     at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)     at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)     at java.util.ArrayList.add(ArrayList.java:458)     在Grow.policy(Grow.java:14)     在Test.main(Test.java:8)

public class Test{
public static void main(String[] args){ 

Grow trr = new Grow();
ArrayList arr = trr.policy();
System.out.print(arr);

}
}

这是我现在拥有的。一切正常,直到我尝试在Test类中创建数组。

import java.util.*;

public class Grow{
    static int row;
    static int column;

public ArrayList<Integer> policy(){

ArrayList<Integer> policy = new ArrayList<Integer>();
    while(row < 51 ){
          while(column < 1){

                policy.add(row);
                policy.add(0);
                column++; //this addition fixed my problem
            }

        column-=1;
        row++;
    }

return policy;

    }   
}

public class Test{

    public static void main(String[] args){ 
       Grow work= new Grow();
       ArrayList testing= work.policy();
       System.out.print(testing);

    }
}

我知道这很简单。我无法看到解决方案。提前致谢。 编辑:更新。发现了问题。列只减少了1(真的可以使用column--;)这使得它永远循环。在代码中添加了列++,现在它可以工作了。知道这很简单。

2 个答案:

答案 0 :(得分:1)

你应该在外面初始化它:

public ArrayList<Integer> poli(){

    ArrayList<Integer> policy = new ArrayList<Integer>();

    while(row < 51 ){
        int r = row;
            while(column < 1){

                policy.add(r);
                policy.add(0);

            }

        column-=1;
        row++;
    }

return policy;

}

此外,您不需要变量来存储rowpolicy.add(row);也可以正常使用。

答案 1 :(得分:0)

发现问题。列只减少了1(真的可以使用column--;)这使得它永远循环。在代码中添加了列++,现在它可以工作了。知道这很简单。 工作代码

import java.util.*;

public class Grow{
    static int row;
    static int column;

public ArrayList<Integer> policy(){

ArrayList<Integer> policy = new ArrayList<Integer>();
    while(row < 51 ){
       while(column < 1){

            policy.add(row);
            policy.add(0);
            column++; //this addition fixed my problem
        }

        column-=1;
        row++;
     }

    return policy;

    }   
}

public class Test{

    public static void main(String[] args){ 
       Grow work= new Grow();
       ArrayList testing= work.policy();
       System.out.print(testing);

    }
}