Video: Ethical Hacking Full Course - Learn Ethical Hacking in 10 Hours | Ethical Hacking Tutorial | Edureka 2024
In dieser Java-Codeliste Die Methode payOneEmployee veranschaulicht einige nützliche Tricks zum Lesen von Daten. Insbesondere hat jeder Scanner, den Sie erstellen, eine nextLine-Methode. (Möglicherweise verwenden Sie diese nextLine-Methode nicht, aber die Methode ist trotzdem verfügbar.)
Wenn Sie die nextLine-Methode eines Scanners aufrufen, erfasst die Methode alles bis zum Ende der aktuellen Textzeile. In dieser Auflistung kann ein Aufruf von nextLine eine ganze Zeile aus der EmployeeInfo lesen. txt-Datei. (In einem anderen Programm kann der nextLine-Aufruf eines Scanners alles lesen, was der Benutzer auf der Tastatur eingibt, bis zum Drücken der Eingabetaste.)
importiert Java. Nutz. Scanner; Java importieren. io. Datei; Java importieren. io. IOException; öffentliche Klasse DoPayroll {public static void main (Zeichenfolge args []) löst IOException aus {Scanner diskScanner = neuer Scanner (neue Datei ("EmployeeInfo. txt")); für (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. close ();} statisch void payOneEmployee (Scanner aScanner) {Angestellter anEmployee = neuer Angestellter (); ein Angestellter. setName (aScanner. nextLine ()); ein Angestellter. setJobTitle (aScanner. nextLine ()); ein Angestellter. cutCheck (aScanner. nextDouble ()); ein Scanner. nextLine ();}}
Beachten Sie die sorgfältige Auswahl der Wörter: nextLine liest alles bis zum Ende der aktuellen Zeile. Leider bedeutet es nicht immer, was es bedeutet, bis zum Ende der aktuellen Zeile zu lesen. Interiming nextInt, nextDouble und nextLine-Anrufe können unordentlich sein. Sie müssen aufpassen, was Sie tun, und die Ausgabe Ihres Programms sorgfältig überprüfen.
Um all dies zu verstehen, müssen Sie die Zeilenumbrüche einer Datendatei schmerzhaft bemerken. Stellen Sie sich einen Zeilenumbruch als zusätzliches Zeichen vor, das zwischen einer Textzeile und der nächsten steht. Stellen Sie sich dann vor, dass der Aufruf von nextLine bedeutet, alles bis einschließlich zum nächsten Zeilenumbruch zu lesen.
Betrachten wir nun diese Figur.
-
Wenn ein Aufruf von nextLine Barry Burd [LineBreak] liest, liest der nachfolgende Aufruf von nextLine CEO [LineBreak].
-
Wenn ein Aufruf an nextDouble die Nummer 5000. 00 liest, liest der nachfolgende Aufruf von nextLine den [LineBreak], der unmittelbar nach der Nummer 5000. 00 kommt. (Das ist alles, was nextLine liest - ein [LineBreak] und nichts weiter.)
-
Wenn ein Aufruf von nextLine den [LineBreak] nach der Nummer 5000. 00 liest, liest der nachfolgende Aufruf von nextLine Harriet Ritter [LineBreak].
Nachdem Sie also die Nummer 5000. 00 gelesen haben, benötigen Sie zwei Aufrufe an nextLine, um den Namen Harriet Ritter zu erhalten. Der Fehler, den Sie normalerweise machen, besteht darin, den ersten dieser beiden Anrufe zu vergessen.
Schauen Sie sich noch einmal die Datei in der Abbildung an. Damit der Code dieses Abschnitts korrekt funktioniert, müssen Sie einen Zeilenumbruch nach den letzten 10000. 00 haben. Wenn Sie dies nicht tun, führt ein abschließender Aufruf von nextLine dazu, dass Ihr Programm abstürzt und brennt. Die Fehlermeldung lautet NoSuchElementException: Keine Zeile gefunden.
Sie werden überrascht sein, wie viele Macken Sie in den Scanmethoden jeder Programmiersprache finden. Zum Beispiel verschlingt die erste nextLine, die aus der Datei in der Abbildung liest, Barry Burd [LineBreak] aus der Datei.
Aber dieser nextLine-Aufruf liefert Barry Burd (ohne Zeilenumbruch) an den laufenden Code. Also sucht nextLine nach einem Zeilenumbruch und nextLine verliert den Zeilenumbruch. Ja, das ist ein subtiler Punkt. Und nein, dieser subtile Punkt bereitet kaum jemandem Probleme.
Wenn dieses Geschäft über nextDouble und nextLine Sie verwirrt, dann geben Sie Java nicht die Schuld. Das Mischen von Eingangsanrufen ist eine heikle Arbeit in jeder Computerprogrammiersprache. Und das wirklich Fiese ist, dass jede Programmiersprache das Problem etwas anders angeht.
Was Sie über nextLine in Java herausfinden, hilft Ihnen, die Probleme zu verstehen, wenn Sie C ++ oder Visual Basic kennenlernen, aber es enthält nicht alle Details. Die Details jeder Sprache sind für diese Sprache einzigartig.