Java 如何增加阵列大小,在阵列末尾添加新的阵列插槽?

Java 如何增加阵列大小,在阵列末尾添加新的阵列插槽?,java,arrays,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"

我正在建立一个像商店一样的计划,它有产品,并且可以选择以价格和一切方式销售。。我想做一个选项,允许我从程序中为阵列添加新的产品,因为我需要增加阵列长度。我知道,泰,谢谢你的帮助

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;
    }
}
produact牛奶棒=新的produact(“牛奶”,5.55,50,10,0);
Proudact ChessProd=新的Proudact(“国际象棋”,4.35,50,10,1);
Proudact-AppleProd=新的Proudact(“苹果”),1.25,50,10,2;
Proudact WotermelonProd=新的Proudact(“Wotermelon”,6.21,50,10,3);
PRODUACT[]MyArray={MilkProd,ChessProd,AppleProd,WotermelonProd};
NewProd(MyArray);
公共静态void NewProd(PRODUACT[]MyArray){
扫描仪扫描=新扫描仪(System.in);
对于(int i=0;i<1;i++){
MyArray[length]=MyArray[MyArray.length+1];
System.out.println(“输入PRODUACT名称:”);
字符串名称=scan.next();
System.out.println(“输入价格:”);
int price=scan.nextInt();
System.out.println(“输入Proudact:”);
int stack=scan.nextInt();
System.out.println(“输入Produact MinStuck”);
int minStuck=scan.nextInt();
System.out.println(“输入PRODUACT Id:”);
int id=scan.nextInt();
PRODUACT NEWPRODUACT=新PRODUACT(名称、价格、卡滞、minStuck、id);
MyArray[MyArray.length]=NewProudact;
}
}

在Java中,数组不能动态放大。
我建议您改用。

在Java中,数组不能动态放大。
我建议您改为使用。

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

因此,不是:

Proudact[] MyArray = ...
创建新的类型列表,操作如下:

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));
    }
}
因此,您案例的完整示例应如下所示:

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));
    }
}
List myList=new ArrayList();
添加(新的Proudact(“牛奶”,5.55,50,10,0));
添加(新的Proudact(“国际象棋”,4.35,50,10,1));
添加(新的Proudact(“苹果”,1.25,50,10,2));
myList.add(新的Proudact(“Wotermelon”,6.21,50,10,3));
公共静态void NewProd(PRODUACT[]MyArray){
扫描仪扫描=新扫描仪(System.in);
对于(int i=0;i<1;i++){
System.out.println(“输入PRODUACT名称:”);
字符串名称=scan.next();
System.out.println(“输入价格:”);
int price=scan.nextInt();
System.out.println(“输入Proudact:”);
int stack=scan.nextInt();
System.out.println(“输入Produact MinStuck”);
int minStuck=scan.nextInt();
System.out.println(“输入PRODUACT Id:”);
int id=scan.nextInt();
添加(新的Proudact(名称、价格、卡滞、minStuck、id));
}
}

查看java集合教程了解更多详细信息。

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

因此,不是:

Proudact[] MyArray = ...
创建新的类型列表,操作如下:

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));
    }
}
因此,您案例的完整示例应如下所示:

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));
    }
}
List myList=new ArrayList();
添加(新的Proudact(“牛奶”,5.55,50,10,0));
添加(新的Proudact(“国际象棋”,4.35,50,10,1));
添加(新的Proudact(“苹果”,1.25,50,10,2));
myList.add(新的Proudact(“Wotermelon”,6.21,50,10,3));
公共静态void NewProd(PRODUACT[]MyArray){
扫描仪扫描=新扫描仪(System.in);
对于(int i=0;i<1;i++){
System.out.println(“输入PRODUACT名称:”);
字符串名称=scan.next();
System.out.println(“输入价格:”);
int price=scan.nextInt();
System.out.println(“输入Proudact:”);
int stack=scan.nextInt();
System.out.println(“输入Produact MinStuck”);
int minStuck=scan.nextInt();
System.out.println(“输入PRODUACT Id:”);
int id=scan.nextInt();
添加(新的Proudact(名称、价格、卡滞、minStuck、id));
}
}

查看java集合教程了解更多详细信息。

您必须创建一个更大的新数组,并从那里的旧数组复制所有数据。但是您必须使用数组吗?A将更易于使用

您必须创建一个更大的新数组,并从那里的旧数组复制所有数据。但是您必须使用数组吗?A将更易于使用

使用ArrayList,然后将其转换为array(如果最终需要的话)

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

使用ArrayList,然后将其转换为array(如果最终需要)

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

可能重复使用的数组具有固定大小、静态长度。不能增加或减少它们的大小。您应该改用
ArrayList
。数组是有用的,但与OOP解决方案相比,它算不了什么。ArrayList的使用有什么问题吗?数组的可能重复使用具有固定大小和静态长度。不能增加或减少它们的大小。您应该改用
ArrayList
。数组很有用,但与OOP解决方案相比,它算不了什么。使用ArrayList有什么问题吗?