Programmēšana

Cilpa, pārslēgšanās vai pārtraukums? Izlemšana un iterācija ar Java paziņojumiem

Java lietojumprogrammas novērtē izteiksmes kontekstā paziņojumi, kas tiek izmantoti tādiem uzdevumiem kā mainīgā deklarēšana, lēmuma pieņemšana vai iterācija pār paziņojumiem. Izrakstu var izteikt kā vienkāršu vai saliktu paziņojumu:

  • A vienkāršs paziņojums ir viena atsevišķa instrukcija uzdevuma veikšanai; tas jāpārtrauc ar semikolu (;).
  • A saliktais paziņojums ir vienkāršu un citu saliktu apgalvojumu secība, kas atrodas starp atvērtajām un aizvērtajām zīmēm ({ un }), kas norobežo saliktā paziņojuma robežas. Saliktie paziņojumi var būt tukši, parādīsies visur, kur parādās vienkārši apgalvojumi, un tos alternatīvi sauc arī par bloki. Saliktais paziņojums nav izbeigts ar semikolu.

Šajā apmācībā jūs uzzināsiet, kā izmantot paziņojumus Java programmās. Varat izmantot tādus paziņojumus kā ja, ja-vēl, slēdzis, priekš, un kamēr deklarēt mainīgos un norādīt izteiksmes, pieņemt lēmumus, atkārtot (vai cilpot) pārrakstus, pārtraukt un turpināt atkārtojumu un daudz ko citu. Dažus eksotiskākus apgalvojumus - piemēram, vērtību atgriešanai no izsauktajām metodēm un izņēmumu izmetšanu - atstāšu nākamajām Java 101 apmācībām.

Pārslēdziet izteiksmes Java 12

Ņemiet vērā, ka šī apmācība ir atjaunināta Java 12 un tajā ir īss ievads slēdzis izteicieni.

lejupielādēt Iegūt kodu Lejupielādējiet šajā apmācībā avota kodu, piemēram, lietojumprogrammām. Izveidoja Jeff Friesen JavaWorld.

Mainīgas deklarācijas un uzdevumi

Es jau iepriekš ieviesu Java mainīgos un paskaidroju, ka pirms lietošanas tie ir jādeklarē. Tā kā mainīgā deklarācija ir atsevišķa koda sala, tas faktiski ir paziņojums - a vienkāršs paziņojums, precīzāk sakot. Visi šie ir mainīgas deklarācijas paziņojumi:

int vecums = 25; mainīgā procentu likme; char [] text = {'J', 'a', 'v', 'a'}; Stīgas nosaukums;

Mainīgā deklarācija minimāli sastāv no tipa nosaukuma, kam pēc izvēles seko kvadrātiekavu pāru secība, kam seko nosaukums, pēc izvēles seko kvadrātiekavu pāru secība un kas izbeigta ar semikolu. Mainīgo var arī skaidri inicializēt tā deklarēšanas laikā.

Tagad apsveriet norīkojuma paziņojums, kas ir cieši saistīts ar mainīgā deklarācijas paziņojumu. Piešķīruma paziņojums mainīgajam piešķir vērtību (iespējams, atsauci uz masīvu vai atsauci uz objektu). Šeit ir daži piemēri:

vecums = 30; procentu likme = 4,0 F; vecums + = 10; teksts [1] = 'A'; teksts [2] = 'V'; teksts [3] = 'A'; vārds = "Džons Doe";

Uzdevuma paziņojums ir izteiksmes paziņojums, kas ir izteiksme, kuru var izmantot kā paziņojumu, ja tam seko semikols. Šos izteicienus kvalificē arī kā izteiksmes paziņojumus:

  • Priekšnoteikums (piem., ++ x;)
  • Priekšnoteikums (piemēram, --y;)
  • Postincrement (piem., x ++;)
  • Pēcdzemdības (piem., y--;)
  • Metodes izsaukums (piem., System.out.println ("Labdien");)
  • Objekta izveide (piem., jauna virkne ("ABC");)

Mainīgas deklarācijas ar jshell

Tu vari izmantot jshell eksperimentēt ar mainīgo deklarācijām un izteiksmes paziņojumiem. Šeit ir daži piemēri, lai jūs sāktu darbu (ievadu Java čaulā skatiet sadaļā "Mācīties Java no paša sākuma"):

jshell> int age = 25 age ==> 25 jshell> float interest_rate interest_rate ==> 0.0 jshell> char [] text = {'J', 'a', 'v', 'a'} text ==> char [ 4] {'J', 'a', 'v', 'a'} jshell> Stīgas nosaukuma nosaukums ==> null jshell> vecums = 30 vecums ==> 30 jshell> interest_rate = 4.0F interest_rate ==> 4.0 jshell > vecums + = 10 $ 7 ==> 40 jshell> teksts [1] = 'A' $ 8 ==> 'A' jshell> teksts [2] = 'V' $ 9 ==> 'V' jshell> teksts [3] = 'A' $ 10 ==> 'A' jshell> name = "John Doe" name ==> "John Doe" jshell> text text ==> char [4] {'J', 'A', 'V' , 'A'} jshell> vecums ++ 13 USD ==> 40 jshell> vecuma vecums ==> 41

Ievērojiet to vecums ++ šķiet, ka neko nav paveicis. Lūk, jūs to redzat 40 ir piešķirts nulles mainīgajam $13. Tomēr postincrement operators veic pieaugumu pēc pašreizējās vērtības atgriešanas. (Patiesībā tas kaut kur saglabā pašreizējo vērtību, veic pieaugumu un pēc tam atgriež saglabāto vērtību.) Ievadīšana vecums to pierāda vecums satur 41, postincrement darbības rezultāts.

Java apvalks nodrošina dažādas komandas un funkcijas, kas vienkāršo darbu ar fragmentiem. Piemēram, / saraksts komanda parāda visus fragmentus, kas ievadīti pašreizējā sesijā:

jshell> / saraksts 1: int vecums = 25; 2: peldošā procentu likme; 3: char [] text = {'J', 'a', 'v', 'a'}; 4: virknes nosaukums; 5: vecums = 30 6: procentu likme = 4.0F 7: vecums + = 10 8: teksts [1] = 'A' 9: teksts [2] = 'V' 10: teksts [3] = 'A' 11: nosaukums = "Džons Doe" 12: teksts 13: vecums ++ 14: vecums

Numurs kreisajā kolonnā unikāli identificē fragmentu. Jūs varat izmantot šo numuru, lai atkārtoti izpildītu fragmentu, uzskaitītu fragmentu, nomestu (izdzēstu) fragmentu utt.

jshell> / 12 teksta teksts ==> char [4] {'J', 'A', 'V', 'A'} jshell> / saraksts 13 13: vecums ++ jshell> / 7 piliens | nomests mainīgais $ 7 jshell> / saraksts 1: int vecums = 25; 2: peldošā procentu likme; 3: char [] text = {'J', 'a', 'v', 'a'}; 4: virknes nosaukums; 5: vecums = 30 6: procentu likme = 4.0F 8: teksts [1] = 'A' 9: teksts [2] = 'V' 10: teksts [3] = 'A' 11: vārds = "Džons Doe" 12 : teksts 13: vecums ++ 14: vecums 15: teksts

Šeit mēs esam ievadījuši /12 atkārtoti izpildīt fragmentu Nr. 12, kurā tiek izvadīts tekstu. Pēc tam mēs iegājām / 13. saraksts uzskaitīt fragmentu Nr. 13, kas palielinās vecums. Tālāk mēs iegājām / 7. piliens lai izdzēstu fragmentu Nr. 7 (ne vairāk vecums + = 10 fragments). Beidzot mēs iegājām / saraksts lai atkārtoti uzskaitītu visus fragmentus. Ievērojiet, ka fragments # 7 ir noņemts un fragments # 15 ir pievienots, pateicoties /12 komandu.

Lēmumu pieņemšana: ja, ja ne, un pārslēdzieties

Lēmuma paziņojumi ļaujiet lietojumprogrammām izvēlēties starp vairākiem izpildes ceļiem. Piemēram, ja pārdevējs šajā mēnesī pārdod vairāk nekā 500 priekšmetus, piešķiriet pārdevējam prēmiju. Turklāt, ja studenta atzīme algebras testā ir lielāka par 85 procentiem, apsveiciet studentu par veiksmīgo darbu; pretējā gadījumā iesakiet studentam vairāk pārbaudīt nākamo pārbaudījumu.

Java atbalsta ja, ja-vēl, un slēdzis lēmuma paziņojumi. Turklāt jauns slēdzis izteicienu funkcija ir pievienota Java 12.

Ja paziņojums

Vienkāršākais Java lēmumu paziņojums ir ja paziņojums, kas novērtē Būla izteiksmi un izpilda citu apgalvojumu, kad šis izteiciens tiek vērtēts kā patiess. The ja priekšrakstam ir šāda sintakse:

ja (Būla izteiksme) paziņojums, apgalvojums

The ja paziņojums sākas ar rezervētu vārdu ja un turpina ar iekavām Būla izteiksmi, kurai seko izpildījums, kas jāizpilda, kad Būla izteiksme vērtē kā patiesu.

Šis piemērs parāda ja paziņojums, apgalvojums. Kad vecums mainīgais satur vērtību 55 vai vairāk, ja izpilda System.out.println (...); lai izvadītu ziņojumu:

if (vecums> = 55) System.out.println ("Jums ir vai ir tiesības uz priekšlaicīgu pensionēšanos.");

Daudzi cilvēki dod priekšroku ietvert jebkuru vienkāršu paziņojumu, kas seko ja teikums iekavās, efektīvi pārveidojot to par līdzvērtīgu saliktu priekšrakstu:

if (vecums> = 55) {System.out.println ("Jums ir vai ir tiesības uz priekšlaicīgu pensionēšanos."); }

Lai gan bikšturi paskaidro, ko izpilda ja paziņojumu, es uzskatu, ka ievilkums nodrošina šo skaidrību un ka breketes nav vajadzīgas.

Eksperimentē ar if paziņojumiem

Izmēģināsim šo piemēru, izmantojotjshell. Restartēt jshell un pēc tam ieviest vecums mainīgais (tipa int), kas ir inicializēts 55:

jshell> int vecums = 55

Pēc tam ievadiet pirmo piemēru ja paziņojums (bez cirtainiem stiprinājumiem, kas ieskauj tā ķermeni):

jshell> if (vecums> = 55) ...> System.out.println ("Jums ir vai bija tiesības uz priekšlaicīgu pensionēšanos."); Jums ir tiesības uz priekšlaicīgu pensionēšanos. jshell>

Ievērojiet, ka jshell> ātras izmaiņas ...> turpināšanas uzvedne, ievadot daudzrindu fragmentu. Spiešana Enter pēc pēdējās fragmenta rindas cēloņiem jshell lai uzreiz izpildītu fragmentu.

Izpildīt / saraksts lai uzskaitītu visus fragmentus. Es novēroju, ka ja izraksta fragments ir piešķirts 2 manā sesijā. Izpilda /2 cēloņi jshell lai uzskaitītu un pēc tam izpildītu šo fragmentu, un tiek izvadīts tas pats ziņojums.

Tagad pieņemsim, ka jūs piešķirat 25 uz vecums un pēc tam atkārtoti izpildiet /2 (vai līdzvērtīgs fragmenta numurs jūsu sesijā). Šoreiz nevajadzētu ievērot ziņojumu izvadē.

Ja-cits paziņojums

The ja-vēl paziņojums novērtē Būla izteiksmi un izpilda paziņojumu. Izpildītais paziņojums ir atkarīgs no tā, vai izteiksme ir patiesa vai nepatiesa. Lūk, šī teksta sintakse ja-vēl paziņojums, apgalvojums:

ja (Būla izteiksme) paziņojums1 cits paziņojums2

The ja-vēl paziņojums ir līdzīgs ja paziņojums, bet tajā ir iekļauts rezervētais vārds cits, kam seko paziņojums, kas jāizpilda, ja Būla izteiksme ir nepatiesa.

Šis piemērs parāda ja-vēl paziņojums, kas kādam, kurš ir jaunāks par 55 gadiem, stāsta, cik gadu ir atlicis līdz priekšlaicīgai pensionēšanās brīdim:

if (vecums> = 55) System.out.println ("Jums ir vai ir tiesības uz priekšlaicīgu pensionēšanos."); else System.out.println ("Līdz priekšlaicīgai aiziešanai pensijā ir jāpaiet" + (55 gadu vecumam) + "gadiem.");

Nosacīts operators salīdzinājumā ar citu

Nosacītais operators (?:) ir līdzīgs ja-vēl paziņojums, apgalvojums. Tomēr šo operatoru nevar izmantot alternatīvu paziņojumu izpildei. Tā vietā tā var atgriezt tikai vienu no divām tā paša veida vērtībām. (Nosacīto operatoru dažkārt dēvē arī par trīskāršo operatoru.)

Ķēdes ja citādi paziņojumi

Java ļauj ķēdīt vairākus ja-vēl paziņojumi kopā situācijām, kad izpildei jāizvēlas viens no vairākiem priekšrakstiem:

ja (Būla izteiksme) paziņojums1 citādi, ja (Būla izteiksme) paziņojums2 cits ... cits paziņojumsN

Ķēdes darbi, izpildot nākamo ja-vēl paziņojums ikreiz, kad pašreizējais ja paziņojuma Būla izteiksme tiek vērtēta kā nepatiesa. Apsveriet demonstrāciju:

if (temperatūra 100,0) System.out.println ("vārīšanās"); else System.out.println ("normāls");

Pirmais ja-vēl paziņojums nosaka, vai temperatūravērtība ir negatīva. Ja tā, tas izpilda System.out.println ("iesaldēšana");. Ja nē, tā izpilda sekundi ja-vēl paziņojums, apgalvojums.

Otrais ja-vēl paziņojums nosaka, vai temperatūravērtība ir lielāka par 100. Ja tā, tā tiek izpildīta System.out.println ("vārīšanās");. Pretējā gadījumā tas izpilda System.out.println ("normāls");.

Cita problēma

Kad ja un ja-vēl tiek izmantoti kopā, un avota kods nav pareizi ievilkts, var būt grūti noteikt, kurš ja asociējas ar cits. Problēmu varat redzēt zemāk esošajā kodā:

int x = 0; int y = 2; if (x> 0) if (y> 0) System.out.println ("x> 0 un y> 0"); else System.out.println ("x <= 0");

Jūs, iespējams, gaidījāt redzēt x <= 0 kā šī koda izvadi, bet tas nekad nenotiks; tā vietā nekas netiks izvadīts. Problēma ir tā, ka cits sakrīt ar tuvāko ja, kurš ir ja (y> 0). Pārformatējot kodu, kļūst skaidrāk, kas notiek:

int x = 0; int y = 2; if (x> 0) if (y> 0) System.out.println ("x> 0 un y> 0"); else System.out.println ("x <= 0");

Šeit tas ir skaidrāks par ja (y> 0) ... cits ...ja-vēl paziņojums seko ja (x> 0) paziņojums, apgalvojums. Lai atbilstu iepriekšējā piemēra nodomam, apkārt jāievieto bikšturi ja (y> 0) un tā turpmāko paziņojumu. Būtībā sekos bloks ja (x> 0):

int x = 0; int y = 2; if (x> 0) {if (y> 0) System.out.println ("x> 0 un y> 0"); } else System.out.println ("x <= 0");

Tā kā x> 0 novērtē kā nepatiesu, System.out.println ("x <= 0"); izpilda. The cits rezervētais vārds skaidri sakrīt ar ja (x> 0).

Pārslēgšanas paziņojums

Kad jums jāizvēlas starp vairākiem izpildes ceļiem, slēdzis paziņojums piedāvā efektīvāku alternatīvu ķēdei. Apskatiet slēdzis paziņojums, apgalvojums:

slēdzis (selektora izteiksme) {gadījums vērtība1: paziņojums1 [pārtraukums;] gadījums vērtība2: paziņojums2 [pārtraukums;] ... gadījums vērtībaN: paziņojumsN [pārtraukums;] [noklusējums: paziņojums, apgalvojums] }

The slēdzis paziņojums sākas ar rezervētu vārdu slēdzis un turpina ar selektora izteiksme kas izvēlas vienu no nākamajiem gadījumiem vai noklusējuma lietu, kuru izpildīt. Atlasītāja izteiksme tiek vērtēta kā vesels skaitlis, raksturs vai virkne.

Pārslēdziet un uzskaitiet konstantes

Atlasītāja izteiksme var arī novērtēt līdz enum nemainīgs. Es iepazīstināšu enums turpmākajā apmācībā.

Katrs gadījums identificē izpildāmo paziņojumu. Lieta sākas ar rezervēto vārdu gadījumā un vērtība, kas apzīmē lietu. Pēc resnās zarnas (:) raksturs ir izpildāmais paziņojums. Pēc paziņojuma var pēc izvēles sekot pārtraukums;, lai pārsūtītu izpildi uz pirmo paziņojumu pēc slēdzis. Ja neviena no lielo un mazo burtu etiķetēm neatbilst atlasītāja izteiksmes vērtībai, izvēles noklusējuma burts, kas sākas ar rezervētu vārdu noklusējums, izpildīs.

Zemāk ir slēdzis priekšraksts, ko izmanto, lai noteiktu, vai vesela skaitļa vērtība ir pāra vai nepāra (izmantojot atlikušo operatoru). Pēc tam tā izdod atbilstošu ziņojumu, izmantojot lietu, kuras etiķete atbilst pārējam:

int i = 27; slēdzis (i% 2) {gadījums 0: System.out.println ("pat"); pārtraukums; 1. gadījums: System.out.println ("nepāra"); }
$config[zx-auto] not found$config[zx-overlay] not found