У меня возникли проблемы с работой моего Scanner
. Он основан на примере, который мой учитель дал нам изменить, но я продолжаю получать ошибки, когда я его запускаю. Когда я запускаю его я получаю эту ошибку:Сканер Java: NoSuchElementException
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at ReadDataFile.main(ReadDataFile.java:25)
Main Class:
/**
* Write a description of class ReadDataFile here.
*
* @author (your name)
* @version (a version number or a date)
*/
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.ArrayList;
public class ReadDataFile {
public static void main(String[] args) throws IOException {
Scanner sInputFile=null;
String FirstName,LastName;
Float PayRate, HoursWorked;
ArrayList<Employee> Records = new ArrayList<Employee>();
try {
sInputFile = new Scanner(new BufferedReader(new FileReader("c:\\temp\\inputData.txt")));
while (sInputFile.hasNextLine()) {
FirstName = new String(sInputFile.next());
if(FirstName.length() > 9)
FirstName = FirstName.substring(0,8);
LastName = new String(sInputFile.next());
if(LastName.length() > 9)
LastName = LastName.substring(0,8);
PayRate = sInputFile.nextFloat();
HoursWorked = sInputFile.nextFloat();
Employee worker = new Employee(LastName,FirstName,PayRate,HoursWorked);
Records.add(worker);
} // while
} // try
catch(Exception IOException)
{
System.out.println("Unknown file error occurred ...");
}
finally { sInputFile.close();}
System.out.print("Complete");
} // main
} // class
Сотрудник класса:
public class Employee
{
String LastName, FirstName;
float PayRate, HoursWorked, Net, Gross, Tax, TaxRate;
public Employee(String LN, String FN, float Rate, float Hours)
{
LastName = LN;
FirstName = FN;
PayRate = Rate;
HoursWorked = Hours;
Gross = PayRate * HoursWorked;
Net = Gross * (1-TaxRate);
Tax = Gross * TaxRate;
}
public float getPayRate()
{
return PayRate;
}
public float getHoursWorked()
{
return HoursWorked;
}
public float getNet()
{
return Net;
}
public float getGross()
{
return Gross;
}
public String getLastName()
{
return LastName;
}
public String getFirstName()
{
return FirstName;
}
public float getTax()
{
return Tax;
}
}
Вот текст, который я пытаюсь читать:
Doe John 13.00 44.5
Doe John 13.00 44.5
Doe John 13.00 44.5
Doe John 13.00 44.5
ли файл, который вы пытаетесь прочитать какие-либо данные в нем? 'next' будет читать весь фрагмент данных, не включая символ новой строки, поэтому я ожидаю, что он завершится ошибкой, если все, что у вас есть в файле, является символом новой строки. – Makoto
Где строка 25 в 'ReadDataFile'. Кстати, это может быть более надежным для чтения, а затем разобрать линию как единое целое. – ChiefTwoPencils
Строка 25: FirstName = new String (sInputFile.next()); –