2016-11-25 3 views
1

고객 개체의 연결된 목록을 만들려고하고 있지만 목록 작성 방법에 대해 완전히 모릅니다. 프로그램을 실행할 때 아무 일도 일어나지 않고 프로그램이 while 루프에서 멈추는 것처럼 보입니다. 난 정말 해달라고 알고 여기 링크 된 개체 목록 채우기 (프로그램 실행시 아무 것도 발생하지 않음)

여기에 내 테스터 클래스 내 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; 

} 
} 

되고 :

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는())에만 있습니다 일종의 산출물을 얻으 려합니다.

는 참고로, 여기 내 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

루프 루프를 결코 당신의 것입니다. 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 : 편집 참조 –