2017-01-05 6 views
0

i次のような入力を持つファイルがあります:SNACK NAME PRICE、タブで区切ります。 私が書いたこのコードを使用して、私がobj製品のArrayListの中ですべてのものを格納します。ArrayListにオブジェクトを格納することができます。最後に格納されたもののみを使用します

Product{code=PATA1, name=rustica san carlo, price=0.4} 
Product{code=PATA2, name=chipsters, price=0.35} 
Product{code=KIND1, name=ovetto kinder, price=0.75} 
:サイクルのために使用して印刷し、それはこの出力を(私はそれが正しいことだと思うこと)を生成しながら、
public ArrayList<Product> listsnack = new ArrayList<>(); 
     public Product readSnack() throws FileNotFoundException, IOException { 
      BufferedReader in = new BufferedReader(new FileReader("input.txt")); 
      String line; 
      while ((line = in.readLine()) != null) { 
       snackline = linea.split("\t"); 
       String code =snackline[0]; 
       String name = snackline[1]; 
       String price = snackline[2]; 
       Product p1 = new Product(snackline[0], snackline[1], snackline[2]); 
       listsnack.add(p1); 

      } 
Product p1 = new Product(snackline[0], snackline[1], snackline[2]); 
      return p1; 
     } 

そして、

今、私は、製品コードと正しい価格と一致するキーボード入力を使用して、 "供給が正しく行われている"と表示する方法を書いたがっています。

私は新しいを呼び出すしようとしている:

Readfile f= new Readfile(); 
f.readSnack().code \\ Comparing this to System.in input 

しかし、私は私の方法でこれを使用するとき、それはただのArrayList内の最後の要素のために動作します。 何が間違っていますか? よろしくお願いします。

+3

まあ、それのルックスで、あなたの 'readSnack'方法は、最後のおやつ(ループの後に' p1')を返します。おそらくあなたは 'リスト'を返すことを意味しましたか? – Zircon

+0

@Zirconでも、最後の 'Product'と同じ情報を持つ別の新しい' Product'が作成されましたが、この 'Product'は' listsnack'リストの最後の 'Produkt'と完全に異なるインスタンスです。 – SomeJavaGuy

+0

@KevinEscheそれで、最後の要素だけでなく、リスト全体にどのように戻っていくことができますか? –

答えて

0

このような機能を構築してください。あなたはそれを呼び出した後、製品をループしてそれらをすべて印刷することができます。

public List<Product> readSnacks() throws FileNotFoundException, IOException { 
    List<Product> listsnack = new ArrayList<>(); 
    BufferedReader in = new BufferedReader(new FileReader("input.txt")); 
    String line; 
    while ((line = in.readLine()) != null) { 
     snackline = linea.split("\t"); 
     String code =snackline[0]; 
     String name = snackline[1]; 
     String price = snackline[2]; 
     Product p1 = new Product(snackline[0], snackline[1], snackline[2]); 
     listsnack.add(p1); 
    } 
    return listsnack; 
} 

あなたはこのようにそれを呼び出すことができます。

List<Product> snacks = readSnacks(); 
+0

ありがとうございました! 私はスナックを提供する方法を書いていますが、私が新しいオブジェクトを作っているときは、 "readfile.listsnack.get(i)。* whatineeed *"と書くことしかできません。 たとえば、すべての商品について、私は価格セクションが必要です... for-eachループを行うべきですか? –

+0

yeah - foreachループ – serge

関連する問題