Video: How To add a Custom Domain On Github Pages 2025
I denne Java-koden, PayOneEmployee-metoden illustrerer noen nyttige triks for å lese data. Spesielt har hver skanner du lager, en nextLine-metode. (Du kan ikke bruke denne nextLine-metoden, men metoden er likevel tilgjengelig.)
Når du ringer en skanners nesteLine-metode, tar metoden alt til slutten av gjeldende tekstlinje. I denne oppføringen kan en samtale til nextLine lese en hel linje fra EmployeeInfo. txt fil. (I et annet program kan en skanners nesteLine-samtale lese alt brukeren skriver på tastaturet til trykk på Enter-tasten.)
importer java. util. Scanner; importer java. io. Fil; importer java. io. IOException; offentlig klasse DoPayroll {public static void main (String args []) kaster IOException {Scanner diskScanner = ny skanner (ny fil ("EmployeeInfo. txt")); for (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. Lukk ();} Statisk tomgangsbetalingOneEmployee (Skanner aScanner) {Medarbeider anEmployee = Ny Medarbeider (); en ansatt. setName (aScanner. nextLine ()); en ansatt. setJobTitle (aScanner. nextLine ()); en ansatt. cutCheck (aScanner. nextDouble ()); aScanner. nextLine ();}}
Legg merke til det forsiktige valget av ord: nextLine leser alt til slutten av den nåværende linjen. Dessverre betyr det ikke hva det betyr å lese opp til slutten av den nåværende linjen. Intermingling nextInt, nextDouble og nextLine-samtaler kan være rotete. Du må se hva du gjør og kontroller programmets produksjon nøye.
For å forstå alt dette, må du være smertefullt klar over en datafilens linjeskift. Tenk på en linjeskift som et ekstra tegn, fast mellom en linje med tekst og den neste. Tenk så at ringer nextLine betyr å lese alt opp til og med neste linjeskift.
Ta en titt på denne figuren.
-
Hvis en samtale til nextLine leser Barry Burd [LineBreak], leser den påfølgende samtalen til nextLine administrerende direktør [LineBreak].
-
Hvis en samtale til nextDouble leser nummeret 5000. 00, leser den påfølgende samtalen til nextLine [LineBreak] som kommer umiddelbart etter nummeret 5000. 00. Det er alt nesteLine leser - en [LineBreak] og ingenting mer.)
-
Hvis en samtale til nextLine leser [LineBreak] etter nummeret 5000. 00, leser den etterfølgende samtalen til nextLine Harriet Ritter [LineBreak].
Så etter å ha lest nummeret 5000. 00, trenger du to samtaler til nextLine for å skape navnet Harriet Ritter. Feilen du vanligvis gjør er å glemme den første av de to samtalene.
Se igjen på filen i figuren. For at denne delen skal fungere korrekt, må du ha en linjeskift etter siste 10000. 00. Hvis du ikke gjør det, gjør et siste anrop til nextLine programkrasj og brenne. Feilmeldingen leser NoSuchElementException: Ingen linje funnet.
Du kan bli overrasket over antall quirks som du finner i hvert programmeringsspråk skanningsmetoder. For eksempel, den første nextLine som leser fra filen i figuren, forteller Barry Burd [LineBreak] fra filen.
Men det neste samtalen gir Barry Burd (uten linjeskift) til løpekoden. Så nextLine ser etter en linjeskift, og nesteLine mister linjeskiftet. Ja, dette er et subtilt punkt. Og nei, dette subtile punktet gir aldri noen problemer for noen.
Hvis denne virksomheten om nextDouble og nextLine forvirrer deg, må du ikke sette skylden på Java. Blanding av innkommende anrop er delikat arbeid i hvilket som helst dataprogrammeringsspråk. Og det virkelig ekkelt er at hvert programmeringsspråk nærmer seg problemet litt annerledes.
Hva du finner ut om nesteLine i Java, hjelper deg med å forstå problemene når du blir kjent med C ++ eller Visual Basic, men det forteller deg ikke alle detaljene. Hvert språk er detaljert for det språket.
