如何增加数组大小,在数组末尾添加一个新的数组插槽?

时间:2015-10-23 10:27:46

标签: java arrays

我正在构建一个像商店这样的程序,它有产品并且可以选择以价格和所有东西出售它们。我想做一个选项,允许我从程序中将新产品添加到阵列中为此,我需要增加我的数组长度。而且我知道了你的所有帮助!

Proudact MilkProd = new Proudact("Milk", 5.55, 50, 10, 0);
Proudact ChessProd = new Proudact("Chess", 4.35, 50, 10, 1);
Proudact AppleProd = new Proudact("Apple", 1.25, 50, 10, 2);
Proudact WotermelonProd = new Proudact("Wotermelon", 6.21, 50, 10, 3);

Proudact [] MyArray = {MilkProd,ChessProd,AppleProd,WotermelonProd};
NewProd(MyArray);

public static void NewProd(Proudact[] MyArray){
    Scanner scan = new Scanner(System.in);
    for (int i = 0; i < 1; i++) {
        MyArray[length] = MyArray[MyArray.length+1];
        System.out.println("Enter Proudact Name : ");
        String Name = scan.next();
        System.out.println("Enter Proudact Price : ");
        int price = scan.nextInt();
        System.out.println("Enter Proudact Stuck : ");
        int Stuck = scan.nextInt();
        System.out.println("Enter Proudact MinStuck");
        int minStuck = scan.nextInt();
        System.out.println("Enter Proudact Id :");
        int id = scan.nextInt();
        Proudact NewProudact = new Proudact(Name,price,Stuck,minStuck, id);
        MyArray[MyArray.length]=NewProudact;
    }
}

4 个答案:

答案 0 :(得分:3)

在Java中,无法动态扩大数组。 我建议你改用ArrayList

答案 1 :(得分:3)

为什么不使用列表而不是数组,因为数组具有静态长度但列表具有动态。

所以而不是:

Proudact[] MyArray = ...

像这样创建Proudact类型的新列表:

List<Proudact> myList = new ArrayList<Proudact>();

然后你可以简单地将项目添加到列表中:

myList.add(new Proudact(Name,price,Stuck,minStuck, id));

因此,您案例的完整示例应如下所示:

List<Proudact> myList = new ArrayList<Proudact>();

myList.add(new Proudact("Milk", 5.55, 50, 10, 0));
myList.add(new Proudact("Chess", 4.35, 50, 10, 1));
myList.add(new Proudact("Apple", 1.25, 50, 10, 2));
myList.add(new Proudact("Wotermelon", 6.21, 50, 10, 3));

public static void NewProd(Proudact[] MyArray){
    Scanner scan = new Scanner(System.in);
    for (int i = 0; i < 1; i++) {
        System.out.println("Enter Proudact Name : ");
        String Name = scan.next();
        System.out.println("Enter Proudact Price : ");
        int price = scan.nextInt();
        System.out.println("Enter Proudact Stuck : ");
        int Stuck = scan.nextInt();
        System.out.println("Enter Proudact MinStuck");
        int minStuck = scan.nextInt();
        System.out.println("Enter Proudact Id :");
        int id = scan.nextInt();
        myList.add(new Proudact(Name,price,Stuck,minStuck, id));
    }
}

检查java集合教程here以获取更多详细信息。

答案 2 :(得分:0)

您将不得不创建一个更大的新数组,并从那里复制旧数组中的所有数据。但是你必须使用数组吗? Set会更容易使用

答案 3 :(得分:0)

使用ArrayList,然后将其转换为数组,如果这是你想要的结果。

List<Proudact> proudactList = new ArrayList<>();

用Proudact类和&amp;的对象填充它然后将其转换为数组

Proudact[] array = proudactList.toArray(new Proudact[proudactList.size()]);