在JAVA

时间:2017-07-01 00:29:05

标签: 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;
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 );
}}

2 个答案:

答案 0 :(得分:1)

您可以使用ArrayList

List<Produit> array = new ArrayList<Produit>();
Produit p = new Produit();
array.add(p);

如果您需要一个具有动态大小的阵列进行锻炼或类似的东西,请查看this implementation. 基本上,当达到限制时,您需要将数组大小加倍,并将所有元素复制到新数组。

答案 1 :(得分:1)

看起来你正在为&#39; do&#39;中的每次迭代分配一个新数组。循环:

  t_p =new Produit[i+1];

然后你填写它的最后一个元素:

   t_p[i]=p;

但是你忘了复制旧数组中的所有其他元素。

为什么要使用这个方案?你可以改为列表吗,即ArrayList?