Я пытаюсь прочитать файл с несколькими типами данных в объект ArrayList с помощью Scanner с разделителем «\ s \ s», однако он не работает должным образом , Я использую printf для просмотра, если данные будут храниться правильно, данные, которые я буду использовать для вычислений позже. Кажется, что данные отображаются правильно, но я все еще получаю исключение «Неправильный формат файла». Также возникает проблема с циклом. Я всегда застреваю при использовании ArrayList объектов. текстовый файлКак прочитать несколько файлов типа данных в ArrayList с помощью сканера
Пример:
item item descr 100 1.50
item2 item descr 250 2.50
item2 item descr 250 3.50
Код:
import java.io.*;
import java.util.*;
public class ReadItems
{
private Scanner input;
ArrayList<Item> item = new ArrayList<Item>();
//open text file
public void openFile()
{
try
{
FileReader in = new FileReader("Items.txt");
input = new Scanner(in).useDelimiter("\\s\\s");
}
catch(FileNotFoundException fileNotFound)
{
System.err.println("Error opening file.");
System.exit(1);
}
}
//read file
public void readFile()
{
try
{
while (input.hasNextLine())
{
item.add(new Item(input.next(), input.next(), input.nextInt(), input.nextFloat()));
for (Item list : item)
{
System.out.printf("%-10s%-48s$%5.2f\n", list.getCode(), (list.getDecription()+ ", "+ list.getWeight()+ "g"), + list.getPrice());
//System.out.println(item);
}
}
}
catch (NoSuchElementException elementEx)
{
System.err.println("Incorrect file format.");
System.exit(1);
}
catch (IllegalStateException stateEx)
{
System.err.println("Error reading from file.");
System.exit(1);
}
}
public void closeFile()
{
if (input != null)
input.close();
}
}
Выход:
item item descr, 100g $ 1.50
item item descr, 100g $ 1.50
item2 item descr, 250g $ 2.50
item item descr, 100g $ 1.50
item2 item descr, 250g $ 2.50
item2 item descr, 250g $ 3.50
Неверный формат файла.
Извините, кажется, я делал тупое дело. Я не запускал программу через свой тестовый класс, где находится main
.
тест:
public class TestReadItems
{
public static void main(String[] args)
{
ReadItems application = new ReadItems();
application.openFile();
application.readFile();
application.closeFile();
}
}
Программа работает без ошибок, однако я не могу показаться, чтобы получить время цикла, чтобы работать должным образом. Выходной сигнал увеличивается в три раза.
Пример кода был бы полезен –
Да, я смотрю на этот SSCCE, и я думаю про себя, я написал это или задал этот вопрос? Удивительно, сколько можно узнать за несколько месяцев :) – xiphias