Я искал в Stack Overflow понятное решение моей проблемы, но не нашел. Этот метод должен взять текстовый файл и поместить информацию в массив объектов.
Текстовый файл отформатирован следующим образом:
1 # Mr Jhon Doe # Taxi # 34.7 3 # Миссис Джексон Тэмми # Телефон # 20.5
Общий формат:
GuestNumber # GuestName # Reason # Cost (int String String double)
Метод помещает информацию в массив объектов arrItems класса ExtraItems, который отслеживает дополнительные расходы, купленные гостем, идентифицированным по номеру гостя.
Переменными класса для класса «Гость» являются «Номер гостя», «Причина», «Стоимость». Я не могу найти способ пропустить имя гостя при создании экземпляров класса, и я продолжаю получать ошибки. Я попробовал метод .skip () и получил исключение NoSuchElementException, и я попытался удалить имя гостя и создать новый экземпляр Scanner для строки из текстового файла, и я получил InputMismatchExpression. Я прикрепил свой код ниже, который не учитывает дополнительный токен.
public TestExtraItem(String textFile)
{
try
{
Scanner inputStream = new Scanner(new FileInputStream(textFile));
while (inputStream.hasNextLine() && counter < 100)
{
String line = inputStream.nextLine();
Scanner lineReader = new Scanner(line).useDelimiter("#");
arrItems[counter] = new ExtraItem(lineReader.nextInt(), lineReader.next(), lineReader.nextDouble());
lineReader.close();
counter++;
}
inputStream.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
и моя попытка его решения
public TestExtraItem(String textFile)
{
try
{
Scanner inputStream = new Scanner(new FileInputStream(textFile));
while (inputStream.hasNextLine() && counter < 100)
{
String line = inputStream.nextLine();
Scanner lineReader = new Scanner(line).skip("Mr").useDelimiter("#");
arrItems[counter] = new ExtraItem(lineReader.nextInt(), lineReader.next(), lineReader.nextDouble());
lineReader.close();
counter++;
}
inputStream.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
У меня были другие попытки, но это была та, которую я мысль должна работать.
Конструктор для класса ExtraItems -
public ExtraItem(int inGuestNum, String inItemType, double inCost)
{
guestNum = inGuestNum;
itemType = inItemType;
cost = inCost;
}
Могу я получить помощь? Я прикрепил полный текстовый файл ниже
1 # Mr G Ferreira # Phone # 7.05
2 # Mrs L Honeywell # Drinks # 71.95
3 # Ms I Mendes # Kitchen # 39.95
1 # Mr G Ferreira # Kitchen # 23.95
1 # Mr G Ferreira # Drinks # 7.15
4 # Mr B Khoza # Taxi # 127.25
5 # г-жа И. Фрейлих # Служба безопасности # 31.95
5 # г-жа И. Фрейлих # Интернет # 7.95
6 # г-н Дж. Ковальски # телефон # 18.30