Java-Programmierung: Lesen eines Zeile zu einem Zeitpunkt

In diesem Java-Code-Eintrag, der payOneEmployee Verfahren zeigt einige nützliche Tricks zum Lesen von Daten. Insbesondere jeder Scanner, die Sie erstellen hat eine nextline Verfahren. (Sie werden vielleicht nicht diese verwenden nextline Verfahren, aber das Verfahren ist verfügbar dennoch.)

Wenn nennen Sie einen Scanner nextline Verfahren, schnappt sich das Verfahren alles bis zum Ende der aktuellen Textzeile nach oben. In dieser Auflistung, ein Aufruf an nextline kann eine ganze Zeile von der Lese EmployeeInfo.txt Datei. (In einem anderen Programm, einem Scanner nextline Anruf kann alles, was der Benutzer auf der Tastatur lesen, auf das Drücken der Enter-Taste.)

Import java.util.Scanner-Import java.io.File-Import java.io.IOException-public class DoPayroll {public static void main (String args []) throws IOException {Scanner diskScanner = new Scanner (neue Datei ( "EmployeeInfo. txt ")) - für (int Empnum = 1- Empnum lt; = 3- Empnum ++) {payOneEmployee (diskScanner) -} diskScanner.close () -} static void payOneEmployee (Scanner aScanner) {Mitarbeiter anEmployee = new Employee()-anEmployee.setName(aScanner.nextLine())-anEmployee.setJobTitle(aScanner.nextLine())-anEmployee.cutCheck(aScanner.nextDouble())-aScanner.nextLine()-}}

Beachten Sie die sorgfältige Wahl der Worte: nextline liest alles bis zum Ende der aktuellen Zeile nach oben. Leider bedeutet, was es bis zum Ende der aktuellen Zeile zu lesen, ist nicht immer das, was Sie denken, es bedeutet. Verwirbelung nextInt, nextdouble, und nextline Anrufe können chaotisch sein. Sie müssen aufpassen, was Sie tun und überprüfen Ausgabe Ihres Programms sorgfältig durch.

Um all dies zu verstehen, müssen Sie schmerzlich bewusst eine Datendatei der Zeilenumbrüche zu sein. Denken Sie an einen Zeilenumbruch als zusätzliches Zeichen, zwischen einer Zeile Text stecken und die nächste. Dann stellen Sie sich, dass die Berufung nextline bedeutet, dass alles bis einschließlich der nächsten Zeilenumbruch zu lesen.

Nun nehmen Sie einen Blick auf diese Figur.

bild0.jpg
  • Wenn ein Anruf zu nextline liest Barry Burd [Linebreak], die nachfolgenden Aufruf nextline liest CEO [Linebreak].

  • Wenn ein Anruf zu nextdouble 5.000,00 liest die Nummer, die nachfolgenden Aufruf nextline liest der [Zeilenumbruch] das kommt unmittelbar nach der Nummer 5000.00. (Das ist alles nextline liest - ein [Zeilenumbruch] und nichts weiter.)

  • Wenn ein Aufruf nextline liest der [Zeilenumbruch] nach der Nummer 5000.00, die nachfolgenden Aufruf nextline liest Harriet Ritter [Linebreak].

So, nachdem die Zahl 5000,00 lesen, müssen Sie zwei Anrufe an nextline um den Namen zu schöpfen Harriet Ritter. Der Fehler, dass Sie in der Regel machen, ist die erste der beiden Anrufe zu vergessen.

Schauen Sie noch einmal auf die Datei in der Abbildung. Für diesen Code der Abschnitt richtig funktioniert, müssen Sie einen Zeilenumbruch nach dem letzten haben 10.000,00. Wenn Sie dies nicht tun, ein letzter Aufruf nextline macht Ihr Programm zum Absturz bringen und zu brennen. Die Fehlermeldung lautet NoSuchElementException: Keine Zeile gefunden.

Sie könnten durch die Anzahl der Macken überrascht sein, dass Sie in jeder Programmiersprache der Scan-Methoden zu finden. Zum Beispiel kann die erste nextline das liest aus der Datei in der Figur verschlingt Barry Burd [Linebreak] aus der Datei.

Aber das nextline Aufruf liefert Barry Burd (Ohne Zeilenumbruch) zum Ausführen von Code. Damit nextline sucht nach einem Zeilenumbruch, und dann nextline verliert den Zeilenumbruch. Ja, das ist ein subtiler Punkt. Und nein, diese subtile Punkt kaum verursacht Probleme für jedermann.

Wenn diese Unternehmen über nextdouble und nextline verwirrt Sie, die Schuld nicht auf Java bitte. Mischen Eingangs Anrufe ist heikle Arbeit in jedem Computer-Programmiersprache. Und die wirklich böse ist, dass jede Programmiersprache, das Problem ein wenig anders nähert.

Was Sie sich über nextline in Java hilft Ihnen, die Probleme zu verstehen, wenn Sie wissen, C bekommen ++ oder Visual Basic, aber es Sie nicht sagen, alle Details. Jede Sprache Details sind einzigartig für diese Sprache.

Menü