Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024
Här är en Java-gåta: Du har två baseballlag - Hankees and the Socks. Du vill visa lagens poäng på två separata linjer, med vinnarens resultatlista först. (På datorskärmen visas vinnarens poäng ovanför förlorarens poäng.) Vad händer när poängen är bundna?
Ge du upp? Svaret är, det finns inget rätt svar. Vad händer beror på hur du skriver programmet. När poängen är lika är tillståndet
hankees> strumpor
false
. Så programmets flöde av körning sjunker ner till
else
-klausulen. Den klausulen visar Socks-poängen först och Hankees-poängen andra.
importjava. util. Scanner;
importera statisk java. lang. Systemet. i;
importera statisk java. lang. Systemet. ut;
classTwoTeams {
public static void main (String args []) {
Skannertangentbord = ny skanner (i );
inthankees, strumpor;
ut. print ("Hankees and Socks scores?");
hankees = tangentbord. nextInt ();
strumpor = tangentbord. nextInt ();
ut. println ();
om (hankees> strumpor) {
ut. skriva ut ("Hankees:");
ut. println (hankees);
ut. skriva ut ("Socks:");
ut. println (strumpor);
} annars {
ut. skriva ut ("Socks:");
ut. println (strumpor);
ut. skriva ut ("Hankees:");
ut. println (hankees);
}
tangentbord. stänga();
}
}
Programmet behöver inte fungera på så sätt. Om du tar den här koden och ändrar
hankees> strumpor
till
hankees> = strumpor
, kommer det i händelse av ett slips att vara Hankees-poängen först.
Antag att du vill ha lite mer kontroll. När poängen är lika, vill du se en
Det är ett slips
meddelande. För att göra detta, tänk på en trekantig gaffel. Du har en spets för en Hankees-vinst, en annan spets för en Socks-vinst och en tredje spets för en slips. Du kan skriva denna kod på flera olika sätt, men ett sätt som ger mycket mening är koden nedan.
importera java. util. Scanner;
importera statisk java. lang. Systemet. ut;
klass WinLoseOrTie {
statisk statisk tomt huvud (String args []) {
Skannertangentbord = ny skanner (System. In);
int hankees, strumpor;
ut. print ("Hankees and Socks scores?");
hankees = tangentbord. nextInt ();
strumpor = tangentbord. nextInt ();
ut. println ();
om (hankees> strumpor) {
ut. println ("Hankees vinna …");
ut. skriva ut ("Hankees:");
ut. println (hankees);
ut. skriva ut ("Socks:");
ut. println (strumpor);
} annars om (strumpor> hankees) {
ut.println ("Socks win …");
ut. skriva ut ("Socks:");
ut. println (strumpor);
ut. skriva ut ("Hankees:");
ut. println (hankees);
} annan {
ut. println ("Det är ett slips …");
ut. skriva ut ("Hankees:");
ut. println (hankees);
ut. skriva ut ("Socks:");
ut. println (strumpor);
}
tangentbord. stänga();
}
}
Denna kod illustrerar ett sätt att tänka på ett problem. Du har en fråga med mer än två svar. (Frågan är "Vem vinner?" Och svaren är "Hankees", "Socks" eller "Neither.") Problemet ber om ett if-uttalande, men en
om
-satsningen har bara två grenar -
true
-grenen och
false
-grenen. Så du kombinerar alternativ för att skapa cascading
om
uttalanden.
Här är formatet för cascading
om
uttalanden
om (Condition1) {
SomeStatements
} annars om Condition2) {
OtherStatements
} annars {
EvenMoreStatements
}
I allmänhet kan du använda
annars om
så många gånger du vill:
om (hankeesWin) {
ut. println ("Hankees vinna …");
ut. skriva ut ("Hankees:");
ut. println (hankees);
ut. skriva ut ("Socks:");
ut. println (strumpor);
} annars om (socksWin) {
ut. println ("Socks win …");
ut. skriva ut ("Socks:");
ut. println (strumpor);
ut. skriva ut ("Hankees:");
ut. println (hankees);
} annars om (isATie) {
ut. println ("Det är ett slips …");
ut. skriva ut ("Hankees:");
ut. println (hankees);
ut. skriva ut ("Socks:");
ut. println (strumpor);
} annars om (gameCancelled) {
ut. println ("Ledsen, sport fans.");
} annars {
ut. println ("Spelet är inte över än.");
}
Ingenting är speciellt om cascading
om
uttalanden. Det här är inte ett nytt programmeringsspråk. Cascading
om
påståenden utnyttjar ett smutthål i Java - ett smutthål om att utelämna lockiga axlar under vissa omständigheter. Annat än det, cascading
om
uttalanden ger dig bara ett nytt sätt att tänka på beslut inom din kod.