【问题标题】:Add elements dynamically to an array in JAVA [closed]将元素动态添加到JAVA中的数组[关闭]
【发布时间】:2017-07-01 00:29:04
【问题描述】:

这段代码让我发疯了,它应该向表格中添加元素,但似乎只有最后一个输入的元素存在于表格中,有人可以测试代码并修复它,或者向我发送一个可以添加元素的方法动态添加到表格中,我的意思是不知道要添加的元素数量。

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 );
}}

【问题讨论】:

    标签: java arrays sorting allocation


    【解决方案1】:

    看起来您正在为“do”循环中的每次迭代分配一个新数组:

      t_p =new Produit[i+1];
    

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

       t_p[i]=p;
    

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

    为什么要使用这个方案?你能用一个列表来代替,即ArrayList吗?

    【讨论】:

    • 完成了,一切正常,谢谢您的帮助
    【解决方案2】:

    您可以只使用ArrayList

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

    如果您需要一个具有动态大小的数组来进行练习或类似的事情,请查看this implementation. 基本上你需要在达到限制时将数组大小加倍并将所有元素复制到新数组中。

    【讨论】:

    • 非常感谢我很久没有使用JAVA了,所以你可以想象我用这种语言变得多么愚蠢
    猜你喜欢
    • 2016-02-09
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多