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

Насколько я понимаю ваш запрос, вы должны использовать ООП. что-то вроде

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

Поместите их в объект List, что-то вроде

List<Item> itemsList = new ArrayList<Item> 

Надеется, что это помощь.

Cuong Vo

+0

«Структуры данных» на самом деле не ООП. – millimoose

0

Хранить их в ArrayList:

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 + "}"; 
    } 

} 

Теперь, просто заполнить экземпляры Order объектов при разборе файла (думаю одна единственная строка = один объект Order), а затем добавьте их в Collection (заказов). A 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() 
Смежные вопросы