Was ist die Java: NoSuchElementException Fehler?
Auf der Suche nach Hilfe mit dem folgenden code...
package pkgPeople;
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;
public class CreateWithoutSerialization {
public static void main(String[] args) throws Exception
{
BankAccount bankAccount = new BankAccount(0, 0);
Person person = new Person();
String nm;
int ht;
int wt;
long ba;
double bal;
File inFile = new File("G:/CS9.27/inperson.txt");
File outFile = new File("G:/CS9.27/outperson.txt");
PrintWriter writer = new PrintWriter(outFile);
Scanner reader = new Scanner(inFile);
nm = reader.nextLine();
ht = reader.nextInt();
wt = reader.nextInt();
ba = reader.nextLong();
bal = reader.nextDouble();
person.setName(nm);
person.setHeight(ht);
person.setWeight(wt);
bankAccount.setAcctID(ba);
bankAccount.setBalance(bal);
System.out.println(person.toString());
//Write the attributes in ASCII to a file
writer.printf("%s is the name of the person.\r\n",nm);
writer.printf("%d inches is the height of %s.\r\n",ht, nm);
writer.printf("%d pounds is the weight of %s\r\n",wt,nm);
writer.printf("%d dollars is the balance of %s\r\n", bal, nm);
writer.printf("%l is the ID of the bank account.\r\n", ba);
}
}
Bei der Ausführung, bekomme ich diese exception..
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at pkgPeople.CreateWithoutSerialization.main(CreateWithoutSerialization.java:23)
Ist das ein Datei-Fehler? Habe versucht mehrere Updates, aber immer noch stecken.
- Können Sie code für die Klasse "Person"?
- Was haben Sie versucht und ich bin neugierig, um herauszufinden, in Ihren Worten, was der stacktrace sagt Sie?
- Sind Sie sicher, dass inperson.txt enthält alle notwendigen Informationen? Kann man diese Datei?
- versucht haben, erstellen Sie ein paar freie Zeilen in mein inperson.txt
- es ist einfach nur eine leere Datei...ich weiß nicht, wie zu finden, den stacktrace.
- Also, Sie versuchen das Lesen von Daten aus der Datei leer. Bin ich im Recht?
- Sein können, müssen Sie zunächst überprüfen, ob die Dateien bereits vorhanden sind am gegebenen Standort und falls vorhanden, welche den Zugriff auf Attribute für diese Dateien also die Frage, ob Dateien sind read-only, hidden,etc.
- Ja, MAKKAM, es ist eine leere Datei
- Spigle - die Tatsache, dass Ihre Eingabezeile leer ist, ist wahrscheinlich die Ursache für dein problem. Siehe meine Antwort.
- Wenn Ihr eine leere Datei, es ist Ihre Antwort. Es gibt keine nächste Zeile, so dass der scanner löst eine Ausnahme aus. Testen wenn Sie eine neue Zeile vor dem Aufruf von es, wenn Sie vermeiden wollen, dass die Ausnahme, oder würdevoll behandeln mit der Ausnahme.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Anfänger in einer Programmiersprache, die Sie benötigen, um zu lernen, wie die Dokumentation und Ressourcen leicht verfügbar für diese Sprache ist.
Wenn Sie sich die javadoc für die Methode, die Sie verwenden hier Sie würde bald erkennen, dass das problem ist, dass es nicht ein neue-Zeile-Zeichen für die
Scanner
zu Lesen in einer Zeile. Überprüfen Sie Ihre Eingabe-Datei, und stellen Sie sicher, es erfüllt die Spezifikationen. Wenn Sie sicher sind, dass Ihre input-Datei korrekt ist, können Sie einige debugging mithilfe der file-API, um sicherzustellen, dass die input-Datei vorhanden ist, bevor Sie versuchen, es zu benutzen als Eingabe für den Scanner.Alle Informationen, die Sie brauchen, ist leicht zugänglich in den javadoc.
Ausnahme wird geworfen in den Ruf zu
reader.nextLine()
Nach in der javadoc, dies bedeutet, dassnextLine()
konnte nicht finden, eine nächste Zeile.Basiert auf einer sorgfältigen Lektüre des javadoc, ich denke, dass dies bedeutet, dass Ihre Eingabe-Datei leer ist. Man könnte dies testen, indem Berufung
hasNextLine()
vor dem AufrufnextLine()
.Hmmm... ich es gibt zwei Dinge, die fehlen hier....
Nun die
NoSuchElementException
kommt, wenn Eingabe erschöpft ist . Es braucht nicht verwandt zu seinnextLine()
. Überprüfen Sie also, ob für die folgende Anzahl von liestHaben Sie die gleiche Anzahl von Zeilen in Ihre inperson.txt
Auch
Wenn Sie fertig zu schreiben ... dies auch tun..
Sonst sehen Sie keine Ausgabe-Datei... 🙂
Glück