Hjem Personlig finansiering Java Programmering og Loop Iterations - dummies

Java Programmering og Loop Iterations - dummies

Indholdsfortegnelse:

Video: #3.3 Java Tutorial | While | For | Iteration Statement | Loops 2024

Video: #3.3 Java Tutorial | While | For | Iteration Statement | Loops 2024
Anonim

For at gøre dit Java-programs sløjfer lettere at skrive og lettere at forstå, skal du vide, hvordan Java's pause og fortsættende udsagn påvirker sløjfehereringer.

Java's pauseoversigt

Tag et gander på programmet nedenfor. Programmet genererer tilfældigt et tal fra 1 til 10, og gentagne gange beder brugeren at gætte det nummer.

Listing 1

importer statisk java. Lang. System. ud; importer java. util. Scanner; importer java. util. Tilfældig; offentlig klasse GuessAgain {public static void main (String args []) {Scannertastatur = ny scanner (System. in); int numGuesses = 0; int randomNumber = ny tilfældig (). nextInt (10) + 1; ud. println ("************"); ud. println ("Velkommen til Guessing Game"); ud. println ("************"); ud. println (); ud. print ("Indtast et int fra 1 til 10:"); int inputNumber = tastatur. nextInt (); numGuesses ++; mens (inputNumber! = RandomNumber) { ud. println (); ud. println ("Prøv igen …"); ud. print ("Indtast et int fra 1 til 10:"); inputNumber = tastatur. nextInt (); numGuesses ++; } ud. print ("du vinder efter"); ud. println (numGuesses + "guesses."); tastatur. luk ();}}

Figuren nedenfor viser et kørsel af koden. Brugeren gør fem gæt. Hver gang kontrollerer computeren at se om gættet er korrekt. En forkert gætte genererer en anmodning om at prøve igen. For et rigtigt gæt, får brugeren et vovende Du vinder sammen med et tal på antallet af gæt han eller hun har lavet. Computeren gentager flere udsagn igen og igen og kontrollerer hver gang gennem for at se om brugerens gæt er det samme som det tilfældigt genererede nummer. Hver gang brugeren gætter, tilføjer computeren 1 til sit tal af gætterier. Når brugeren foretager det rigtige gæt, viser computeren det, der tæller.

Hvad er akavet om dette program? Godt, nogle udsagn vises mere end en gang i programmet. Normalt er en erklæring, der kopieres fra den ene del af et program til en anden, ikke nogen grund til bekymring. Men den overordnede strategi virker mistænkelig. Programmet får et nummer fra brugeren før sløjfen og (igen) inde i sløjfen.

ud. print ("Indtast et int fra 1 til 10:"); int inputNumber = tastatur. nextInt (); numGuesses ++; mens (inputNumber! = RandomNumber) {out. println (); ud. println ("Prøv igen …"); ud. print ("Indtast et int fra 1 til 10:"); inputNumber = tastatur. nextInt (); numGuesses ++; }

Denne kode bruger et standardtrick til at gøre loops arbejde. Den hedder priming en loop. Mønsteret er

Få input , mens den indtastning du har, ikke er den sidste indgang { Få mere input }

I begyndelsen af ​​while loop, kontrollerer computeren en tilstand, der har at gøre med brugerens input. Så går computeren ikke ind i sløjfen, før brugeren giver noget input. Så når computeren er inde i sløjfen, spørger computeren om mere input for at føje loopens næste iteration. Tricket virker mærkeligt, men det virker.

Udviklere bruger denne teknik, priming en loop, hele tiden, så det kan ikke være så slemt. Men der er en anden måde.

Listing 2

importer statisk java. Lang. System. ud; importer java. util. Scanner; importer java. util. Tilfældig; offentlig klasse GuessAgain {public static void main (String args []) {Scannertastatur = ny scanner (System. in); int inputNumber, numGuesses = 0; int randomNumber = ny tilfældig (). nextInt (10) + 1; ud. println ("************"); ud. println ("Velkommen til Guessing Game"); ud. println ("************"); ud. println (); mens (sand) { ud. print ("Indtast et int fra 1 til 10:"); inputNumber = tastatur. nextInt (); numGuesses ++; hvis (inputNumber == randomNumber) { break; } ud. println (); ud. println ("Prøv igen …"); } ud. print ("du vinder efter"); ud. println (numGuesses + "guesses."); tastatur. luk ();}}

Fra brugerens synspunkt gør koden i Listing 2 nøjagtig den samme som koden i Listing 1. (For at se output fra et program henvises til ovenstående figur.) forskellen er Listing 2 har kun ét opkald til tastatur. nextInt. Det kald er inde i løkken, så computeren skal gå i sløjfen uden at teste nogen indgang.

Hvis du ser på sløjfens tilstand, kan du se, hvordan dette virker. Slingens tilstand er altid sandt. Uanset hvad der foregår, løber tilstanden altid sin test. Så sløjfens tilstand er et stort svindel. Du hopper aldrig ud af løkken ved at fejle testen i loopens tilstand. I stedet hopper du ud, når du rammer break-udsagnet, der er inde i sløjfen (og du rammer denne pauseoversigt, når du kommer forbi om (inputNumber == randomNumber) roadblock). Det hele virker meget pænt.

Når computeren udfører en pauseoversigt, der er i en loop, springer computeren ud af sløjfen (til den første sætning, der kommer efter sløjfen).

Med en pauseoversigt springer computeren ud af kun et sløjfe. Hvis den sløjfe er inde i en anden sløjfe (en ydre sløjfe), hopper computeren ikke uden for den ydre sløjfe.

offentlig klasse BreakOutOfLoop {public static void main (String [] args) { for (int i = 0; i <3; i ++) { for (int j = 0; j <100; j ++) { System. ud. print (j + ""); hvis (j> 9) {break;} } System. ud. println ("jeg brød ud!"); } }}

For at illustrere indeholder følgende figur udgangen af ​​den foregående kode:

Når computeren når break-udsagnet, hopper styringen til jeg slog ud sætningen.At jeg brækkede erklæringen er udenfor for j loop men det er indenfor for i loop.

Fra programmørens synspunkt er koden i Listing 2 mere naturlig end koden i Listing 1. Hvordan går spillet til sidst? Brugeren gætter, så kontrollerer computeren gættet, og derefter (hvis gættet ikke er korrekt) siger computeren "Prøv igen. "Det er rækkefølgen af ​​begivenheder som beskrevet i Listing 2. Men i Listing 1 synes koden inde i løkken at beskrive begivenhederne i omvendt rækkefølge: Loopen siger" Prøv igen ", og så indtaster brugeren et nummer.

Listing 2 tilbyder et godt alternativ til loop-priming-teknikken i Listing 1. Så hvorfor gider programmører først og fremmest deres sløjfer? Har break statements har nogen skjulte ulemper? Godt, svaret afhænger af dit synspunkt. Nogle programmører mener, at break statements i loops er forvirrende. Hoppet fra udsagn til udsagn gør dem svimmel og minder dem om noget fra 1960'erne kaldet spaghetti kode . (Spaghetti-kode bruger goto-sætninger til at hoppe fra en udsagn til en anden. I Pascal ved eksempel siger forfatter B. Burd "Programmering med goto er som at rejse rundt i Paris ved at svømme gennem kloaksystemet. korte nedskæringer, men ingen af ​​dem er værd at tage. ") På en eller anden måde er brud på udsagn i sløjfer undtagelsen, ikke reglen. Brug dem, hvis du vil, men forvent ikke at finde mange af dem i andres Java-kode.

Java's fortsættelse erklæring

Listing 3 tilbyder mere hemmelig sauce til dit programs løkker. Forestil dig et spil, der tilfældigt genererer tre tal fra 1 til 20. Brugeren tager fem drejer gætter på tallene. Når brugeren indtaster et korrekt gæt, lykønsker programmet brugeren. ("God gæt," siger programmet.) Når brugeren indtaster et fejlagtigt gæt, giver programmet ingen feedback.

Liste 3 indeholder nogle kodeord, så det hele kan ske.

Listing 3

importer statisk java. Lang. System. ud; importer java. util. Scanner; importer java. util. Tilfældig; offentlig klasse GuessAgainAndAgain {public static void main (String args []) {Scanner keyboard = ny scanner (System. in); int inputNumber; int randNum1 = ny tilfældig (). nextInt (20) + 1; int randNum2 = ny tilfældig (). nextInt (20) + 1; int randNum3 = new Random (). nextInt (20) + 1; ud. println ("************"); ud. println ("Velkommen til Guessing Game"); ud. println ("************"); ud. println (); for (int i = 0; i <5; i ++) {out. print ("Indtast en int:"); inputNumber = tastatur. nextInt (); hvis (inputNumber! = RandNum1 && inputNumber! = RandNum2 && inputNumber! = RandNum3) { fortsæt; } ud. println ("God gæt!"); ud. println ();} ud. print ("Tallene er"); ud. print (randNum1 + ""); ud. print (randNum2 + ""); ud. print (randNum3 + ""); tastatur. close ();}}

Denne figur viser et løb af et sådant program.

Java's fortsættende sætning fortæller computeren at hoppe forbi de resterende udsagn inde i sløjfen.Det er, i stedet for at udføre de resterende udsagn inden i løkken, bevæger computeren sig til starten af ​​den næste iteration af sløjfen. Så i Listing 3, når inputNumber ikke er et af programmets tilfældigt genererede tal, hopper computeren forbi "God gæt" -koden, øger loop-tælleren (variablen i) og beder brugeren om en anden inputværdi. (Selvfølgelig, hvis loop-tælleren rammer sin grænse, udfører computeren ikke en anden iteration. I stedet springer computeren ud af sløjfen og udfører hvad der står efter sløjfen.)

Du kan nemt omskrive Listing 3 således at koden ikke har nogen fortsættelseserklæring. Du bliver nødt til at sætte "God gæt" -koden inde i en if-erklæring, men det ville være okay. Fortsættelseserklæringen gør ikke meget for at forbedre udseendet af Listing 3-programmet. Men når du vil undgå at undgå nesting kode inde, hvis udsagn, kommer fortsættelsen er til nytte.

Måske er i din ansøgning resten af ​​sløjfen en kompliceret rækkefølge af udsagn. Du ønsker ikke at få denne sekvens til at virke mere kompliceret ved at omslutte den inde i en hvis erklæring. Eller måske i din app springer du kun sjældent over resten af ​​sløjfen, og du vil understrege denne sjældenhed ved ikke at omslutte resten af ​​sløjfen i en if-erklæring. I begge tilfælde kan en fortsat erklæring være det rigtige valg.

Java Programmering og Loop Iterations - dummies

Valg af editor

Fuld redigeringsfunktion i Photoshop Elements 10 - dummies

Fuld redigeringsfunktion i Photoshop Elements 10 - dummies

Fuld fotoredigeringsfunktion tilbyder bundter af værktøjer, som du kan bruge at redigere dine billeder, fra korrektionsværktøjer til fastsættelse af farve og klarhed til filtre, lag og meget mere for at ændre eksisterende fotos eller skabe helt originale billeder fra bunden. Men alle disse værktøjer gør også Komplet fotoredigeringstilstand kompleks. Du kan flytte ind i ...

Generelle blandingsformer i Photoshop Elements - dummies

Generelle blandingsformer i Photoshop Elements - dummies

Elementer spænder over 25 blandingstilstande. Blend modes påvirker hvordan farver interagerer mellem lag og også hvordan farver interagerer, når du anvender maling på et lag. Ikke alene gør blandingstilstande interessante effekter, men du kan også nemt anvende, redigere eller fjerne blandingsfunktioner uden at røre dine billedpixel. De forskellige blandingstilstande ...

Geometriske formindstillinger i Photoshop Elements - dummies

Geometriske formindstillinger i Photoshop Elements - dummies

Geometriindstillinger hjælpe med at definere, hvordan dine figurer ser ud. Klik på nedpegepilen i værktøjsindstillingerne i Elements for at få adgang til de geometriske indstillinger, der beskrives i det følgende. Rektangulære og afrundede rektangel geometriske indstillinger Her er geometriske indstillinger for rektangel og afrundede rektangelformer: Ubegrænset: Giver dig mulighed for at få fri tøj til at tegne en ...

Valg af editor

Sådan bygger du tabeller i HTML5 - dummies

Sådan bygger du tabeller i HTML5 - dummies

Sommetider indeholder din webside data bedst fremlagt i et bord . Du kan bruge HTML5's komplette bordsystem til at oprette tabeller som den i dette eksempel: Den grundlæggende struktur i et bord i HTML-format er rimeligt let at forstå; Tjek koden, der oprettede tabellen i eksemplet:

Hvordan man ændrer gentagne baggrunde på CSS3-steder - dummier

Hvordan man ændrer gentagne baggrunde på CSS3-steder - dummier

Der er situationer, hvor man kun vil en enkelt kopi af et baggrundsbillede på dit CSS3-websted. Det kan være, at billedet du har brugt er noget, der ikke gentager sig godt eller er stort nok til, at du virkelig ikke vil have det gentaget. Følgende procedure viser en teknik, du kan bruge til at fortælle ...

Hvordan man opbygger en webside skabelon fra scratch-dummies

Hvordan man opbygger en webside skabelon fra scratch-dummies

Standardværktøjet på tværs af digitalt agenturer og interne afdelinger til opbygning af website grafik er Adobe Photoshop. Selvom fyrværkeri er optimeret og målrettet til at producere web-grafiske kildefiler, er det bare ikke fanget, sandsynligvis på grund af den massive genoplæringsindsats ville det medføre, at hele afdelinger gør omskifteren. At oprette et nyt ...

Valg af editor

Sådan godkendes medlemmer til din LinkedIn Group - dummier

Sådan godkendes medlemmer til din LinkedIn Group - dummier

Som flere og flere mennesker finder ud af din ny LinkedIn-gruppe, og som medlemmer begynder at deltage, kan du opleve, at nogle af de personer, der har klikket på linket for at deltage, ikke er på din forhåndsgodkendte liste. Måske er de mennesker, du ikke har forstået var på LinkedIn, eller du var ikke klar over, at de var gyldige grupper ...

Hvordan man tilføjer billeder til kroppen i din LinkedIn-profil til Visual Social Marketing - dummies

Hvordan man tilføjer billeder til kroppen i din LinkedIn-profil til Visual Social Marketing - dummies

Ud over et profilbillede giver LinkedIn brugere mulighed for at forbedre de visuelle sociale markedsføringselementer i deres profiler ved at tilføje billeder til deres profilprofil. Du kan tilføje billeder til ethvert afsnit i din LinkedIn-profil. Tilføjelse af billeder til din profil kan hjælpe dig med at fortælle din historie visuelt og ...

Sådan tilføjer du en virksomhedsside til LinkedIn - dummies

Sådan tilføjer du en virksomhedsside til LinkedIn - dummies

, Når du har opfyldt kravene til oprettelse en virksomhedsside på LinkedIn, er det tid til at komme i gang ved at tilføje selskabets side til Linkedins system. For at oprette din virksomhedsside skal du blot følge disse trin: