如何更改数组的长度

时间:2013-10-17 00:08:48

标签: java arrays

之前我问了一个类似的问题,但我无法弄清问题是什么。我是编程新手,对如何通过将其初始长度设置为变量来更改数组的长度感到困惑,但它没有更新。

我的代码:

import java.util.Scanner;

class computer{

    int g = 1;  //create int g = 2
    int[] compguess = new int[g];   //set array compguess = 2

    void guess(){

        int rand;   //create int rand
        int i;  //create int i
        rand = (int) Math.ceil(Math.random()*10);   // set rand = # 1-10
        for (i = 0; i < compguess.length; i++){     // start if i < the L of the []-1 (1)

            if(rand == compguess[i]){   //if rand is equal to the Ith term, break the for loop
                break;
            }
        }   //end of for loop
        if(i == compguess.length - 1){  //if i is = the length of the [] - 1:
            compguess[g - 1] = rand;    // set the new last term in the [] = rand
            g++;    // add 1 to the length of the [] to make room for another int
            System.out.println(compguess[g - 1]);   // print the last term
        }
    }
}

public class game1player2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        computer computer1 = new computer();    // create new computer object
        for(int a = 0; a < 3; a++){     // start if a < 3
            computer1.guess();      // start guess method
            for(int n = 0; n < computer1.compguess.length; n++) //print the contents of []
            System.out.println(computer1.compguess[n]);     // print out entire array
        }
        {
            input.close();
        }
    }
}

3 个答案:

答案 0 :(得分:2)

在Java中创建数组后,无法更改数组的长度。相反,必须分配一个新的更大的数组,并且必须复制元素。幸运的是,List接口的实现已经在幕后为您完成,其中最常见的是ArrayList

顾名思义,ArrayList包装了一个数组,提供了通过add()remove()等方法添加/删除元素的方法(参见前面提到的文档)。如果内部数组填满,则创建一个大1.5倍的新数组,将旧元素复制到它上面,但这一切都是隐藏的,这非常方便。

答案 1 :(得分:1)

我建议使用arrayList。它会根据需要调整大小。导入ArrayList<Integer> list=new ArrayList<>();后,使用java.util.ArrayList创建。

您可以按如下方式设置值。要将位置i中的值设置为值val,请使用:

list.set(i, val);

您可以使用list.add(someInt);添加到最后,并使用int foo=list.get(position)进行检索。

通过仅将数组复制到较大的数组,可以“调整大小”数组。那个仍然生成一个新数组而不是在适当的位置操作。 intInteger次转化是通过自动装箱处理的。

答案 2 :(得分:0)

您无法在Java中更改数组的长度。您需要创建一个新值并复制值,或使用ArrayList