2013-06-09 3 views
0

그래서 파일의 정보를 변수에 저장해야하는 곳이 있지만이 작업을 수행하는 방법을 알 수는 없습니다. 현재로서는이 내가 가진 무엇 :파일의 텍스트를 변수에 저장하는 방법은 무엇입니까?

다음과 같은 출력을 생성
while(fileScanner.hasNextLine()) 
{ 
    String line = fileScanner.nextLine(); 
    String [] array = line.split(","); 
    for (int i = 0; i < array.length; i++) 
    { 
    System.out.println(array[i]); 
    } 
} 

:

Item 
Quantity 
Price 
Widget 
273 
12.99 
Engine 
3 
3490.33 
Flux Capacitor 
1 
29.99 
Justin Bieber Bobbleheads 
488 
19.24 

사람이 내가 다른 변수로 출력의 별도의 라인을 저장할 수있는 방법을 알고 있나요? 아이디어는 나중에 숫자를 사용하여 연산을 수행 할 수 있고 (정수를 곱하기 등) 단일 변수에 모두 저장하면 작동하지 않습니다.

+0

다소 모호한 질문입니다. 어떤 유형의 변수입니까? 헤더 행을 올바르게 처리 할 수 ​​있는지 또는 항상 동일하다고 가정 할 수 있습니까? 왜 모든 데이터가 포함 된 단일 변수가 아닌가? – boxed

답변

0

귀하의 요구 사항을 이해하는 한, 귀하는 OOP를 사용해야합니다.

public class Item{ 
    private String ItemType; //Widget, Engine... 
    private int Quantity; 
    private double Price; 
} 

같은 일이

List<Item> itemsList = new ArrayList<Item> 

희망이 도움이 같은 목록 객체에 뭔가를 담아. ArrayList에서

쿠옹 Vo에

+0

"데이터 구조"는 실제로 OOP가 아닙니다. – millimoose

0

스토어 그들 :

List<String[]> lines = new ArrayList<>(); 
while(fileScanner.hasNextLine()) { 
    lines.add(fileScanner.nextLine().split(",")); 
} 
1

이 주문 목록 것으로 보인다. 파일을 구문 분석하는 동안 그래서, 대신에 다른 변수에 저장의 Order 객체로을 캡슐화 이제

public class Order { 
    private String itemName; 
    private int quantity; 
    private double price; 

    public Order(String itemName, int quantity, double price) { 
     this.itemName = itemName; 
     this.quantity = quantity; 
     this.price = price; 
    } 

    // constructor overloading to help instantiate from Strings 
    public Order(String itemName, String quantity, String price) { 
     this (itemName, Integer.parseInt(quantity), Double.parseDouble(price)); 
    } 

    // getters/setters 

    @Override 
    public String toString() { // to print Order values to console easily 
     return "{item = " + itemName + 
      ", quantity = " + quantity + 
      ", price = " + price + "}"; 
    } 

} 

같은 클래스를함으로써 (여기 OOP를 생각한다), 단순히 Order 객체의 인스턴스를 채 웁니다 (생각 하나의 단일 줄 = 하나의 Order 개체)을 입력 한 다음 Collection (주문 중)에 추가하십시오. List이 좋은 선택입니다.

List<Order> listOfOrders = new ArrayList<Order>(); 
while(fileScanner.hasNextLine()) 
{ 
    String line = fileScanner.nextLine(); 
    String [] array = line.split(","); 
    for (int i = 0; i < array.length; i++) 
    { 
    // instantiate; initialize with passed params; add to list 
    listOfOrders.add(new Order(array[0], array[1], array[2])); 
    } 
} 
System.out.println(listOfOrders); // would use Order.toString() 
관련 문제