2016-11-25 3 views
1

私は顧客オブジェクトのリンクリストを作成しようとしていますが、リストを埋める方法については完全にはわかりません。プログラムを実行しても何も起こらず、プログラムがwhileループで動かなくなっているようです。リンクされたオブジェクトリストの入力(プログラムの実行時に何も起こりません)

import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.io.File; 
import java.util.*; 

public class CustomerRunner { 
    public static void main(String[] args) throws FileNotFoundException { 
     String name; 
     String address; 
     String num; 
     int year; 
     Customer customer; 

     LinkedList<Customer> lst = new LinkedList<Customer>(); 

     Scanner in = new Scanner(new File("Customers.txt")); 
     Scanner input = new Scanner(System.in); 

     while(in.hasNext()) { 
      for (int i = 0; i < lst.size(); i++){ 
       name = in.next(); 
       address = in.next(); 
       num = in.next(); 
       year = in.nextInt(); 

       customer = new Customer(name, address, num, year); 
       System.out.println(customer.toString()); 
      //fill linkedList 
      lst.add(customer); 
      } 
     } 
     System.out.println("1"); 
     System.out.println(lst.size()); 

} 
} 

のprintln(1)とのprintln(lst.size())のみです:私は本当に

ここでは私のCustomerクラスは

public class Customer { 
    private String name; 
    private String address; 
    private String num; 
    private int year; 

    public Customer(String name, String address, String num, int year) { 
     this.name = name; 
     this.address = address; 
     this.num = num; 
     this.year = year; 
    } 
    @Override 
    public String toString() { 
     return "Name: " + name + "\nAddress: " + address + "\nCustomer Number: " + num + "\nLast Order: " + year; 

} 
} 

されており、ここで私のテスタークラスで知りません何らかの出力を得ようとするのです。

は参考のために、ここで私のCustomers.txt

Brooke MainStreet 123456789 2016 
Adam MainStreet 234567890 2015 
Zack MainStreet 123412341 2014 
Cam MainStreet 453648576 2010 
Tanya MainStreet 121212121 2005 
Jason MainStreet 556574958 2004 
Andrew MainStreet 777777777 2012 
John MainStreet 999999999 2015 
Jeff MainStreet 555444321 2010 

答えて

1

は、forループループ決してあなたのです。 ArrayList、lstには最初は項目がないため、forループが実行されるとそのサイズは0になります。 Scannerはforループが失敗したトークンを決して放棄しないので、外側whileループは繰り返し続けます。代わりにforループを使用するのではなく、Scannerオブジェクトのトークンがなくなったときをチェックするwhileループを使用してください。

例えば、

while (in.hasNextLine()) { 
     String line = in.nextLine(); 

     // I scan here the line obtained, but also could split the String 
     // if desired 
     Scanner lineScanner = new Scanner(line); 
     String name2 = lineScanner.next(); 
     String addr2 = lineScanner.next(); 
     String num2 = lineScanner.next(); 
     int year2 = lineScanner.nextInt(); 
     lineScanner.close(); 

     Customer cust2 = new Customer(name2, addr2, num2, year2); 
     lst.add(cust2); 
    } 
+0

@Brooke:編集を参照してください –

関連する問題