在JAVA中向数组动态添加元素
这段代码让我抓狂,它应该向表中添加元素,但似乎只有最后输入的元素存在于表中,有人可以测试代码并修复它,或者给我发送一个方法,我可以动态地向表中添加元素,我的意思是不知道要添加的元素数量在JAVA中向数组动态添加元素,java,arrays,sorting,allocation,Java,Arrays,Sorting,Allocation,这段代码让我抓狂,它应该向表中添加元素,但似乎只有最后输入的元素存在于表中,有人可以测试代码并修复它,或者给我发送一个方法,我可以动态地向表中添加元素,我的意思是不知道要添加的元素数量 import java.lang.String; import java.util.Scanner; public class Facture { private float Remise; private float THT; private float tva; private float quantite
import java.lang.String;
import java.util.Scanner;
public class Facture {
private float Remise;
private float THT;
private float tva;
private float quantite;
private static String v1;
private static float v2;
private static int choix;
private static String R="o";
public static void main(String[] args) {
Scanner stdin=new Scanner(System.in);
System.out.println("1.Ajouter un produit au system");
System.out.println("2.Retirer un produit au system");
System.out.println("3.Nouveau achat");
choix=stdin.nextInt();
int i=0,j=0;
Produit[] t_p=new Produit[i];
if(choix==1)
{
do
{
t_p =new Produit[i+1];
System.out.println("entrer le nom du produit");
v1=stdin.next();
System.out.println("entrer le prix du produit");
v2=(float) stdin.nextDouble();
Produit p=new Produit(v1,v2);
t_p[i]=p;
i++;
System.out.println("Voulez vous ajouter un autre produit o/n:");
R=stdin.next();
}while(R.toLowerCase().equals("o"));
while(j<t_p.length)
{
t_p[j].Affiche();
j++;
}
}
System.out.println("i: "+i);
System.out.println("length: "+t_p.length );
System.out.println("t_p[0]: "+t_p[0].nom);
System.out.println("t_p[1]: "+t_p[1].nom );
}}
你可以用一个
如果你需要一个dinamic大小的数组来做练习或类似的事情,请看
基本上,当达到限制时,您需要将数组大小加倍,并将所有元素复制到新数组。看起来您正在为“do”循环中的每个迭代分配一个新数组:
t_p =new Produit[i+1];
然后填写最后一个元素:
t_p[i]=p;
但是您忘了复制旧数组中的所有其他元素
为什么要使用这个方案呢?你能给我一个列表吗,即ArrayList?非常感谢,我已经很长时间没有使用JAVA了,所以你可以想象我在这种语言中变得多么愚蠢。完成了,它工作得很好谢谢你的帮助
t_p[i]=p;