Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中向数组动态添加元素_Java_Arrays_Sorting_Allocation - Fatal编程技术网

在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;