- Η εντολή switch μας επιτρέπει να κατευθύνουμε τη ροή του
προγράμματος προς μια συγκεκριμένη σταθερή τιμή ανάλογα με την
τιμή μιας παράστασης.
- Συντάσσεται ως εξής:
switch (παράσταση) {
case σταθερή1:
εντολή1;
εντολή1α;
εντολή1β;
//...
break;
case σταθερή2:
εντολή2;
//...
break;
//...
default:
εντολή ν;
break;
}
- Ανάλογα με το με ποια σταθερή ισούται η τιμή της παράστασης
εκτελείται η αντίστοιχη εντολή.
- Αν καμία από τις σταθερές δεν ταυτίζεται με την τιμή της παράστασης
τότε εκτελείται η εντολή που ακολουθεί την default (αν υπάρχει), αλλιώς
δεν εκτελείται καμία εντολή.
- Παράδειγμα (τυπώνει την είσοδο μετατρέποντας χαρακτήρες που παριστάνονται
με ακολουθίες διαφυγής στις αντίστοιχες ακολουθίες):
import gr.aueb.dds.BIO;
class PrintEscapes {
public static void main(String args[]) {
int c;
while ((c = BIO.readChar()) != -1)
switch (c) {
case '\n':
BIO.print("\\n");
break;
case '\r':
BIO.print("\\r");
break;
case '\t':
BIO.print("\\t");
break;
default:
BIO.print((char)c);
}
}
}
Με είσοδο τον εαυτό του παράγει το παρακάτω αποτέλεσμα:
import gr.aueb.dds.BIO;\r\n\r\nclass PrintEscapes {\r\n\tpublic static
void main(String args[]) {\r\n\t\tint c;\r\n\r\n\t\twhile ((c = BIO.re
adChar()) != -1)\r\n\t\t\tswitch (c) {\r\n\t\t\tcase '\n':\r\n\t\t\t\t
BIO.print("\\n");\r\n\t\t\t\tbreak;\r\n\t\t\tcase '\r':\r\n\t\t\t\tBIO
.print("\\r");\r\n\t\t\t\tbreak;\r\n\t\t\tcase '\t':\r\n\t\t\t\tBIO.pr
int("\\t");\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tBIO.print((
char)c);\r\n\t\t\t}\r\n\t}\r\n}\r\n\r\n
- Το break δηλώνει ότι ο έλεγχος του προγράμματος μετά την εντολή
συνεχίζει στο τέλος της switch.
Σε αντίθετη περίπτωση ο έλεγχος του προγράμματος συνεχίζει στην επόμενη
case.
Η ιδιότητα αυτή μας επιτρέπει να δηλώσουμε πολλαπλές τιμές.
- Το παρακάτω παράδειγμα μετατρέπει όλα τα πεζά φωνήεντα σε a
και σύμφωνα σε z
import gr.aueb.dds.BIO;
class MapChars {
public static void main(String args[]) {
int c;
while ((c = BIO.readChar()) != -1)
switch (c) {
case 'a': case 'e': case 'i': case 'o':
case 'u': case 'y':
BIO.print('a');
break;
case 'b': case 'c': case 'd': case 'f':
case 'g': case 'h': case 'j': case 'k':
case 'l': case 'm': case 'n': case 'p':
case 'q': case 'r': case 's': case 't':
case 'v': case 'w': case 'x': case 'z':
BIO.print('z');
break;
default:
BIO.print((char)c);
}
}
}
Με είσοδο τον εαυτό του παράγει το παρακάτω αποτέλεσμα:
azzazz zz.aaaz.zzz.BIO;
zzazz MazCzazz {
zazzaz zzazaz zaaz zaaz(Szzazz azzz[]) {
azz z;
zzaza ((z = BIO.zaazCzaz()) != -1)
zzazzz (z) {
zaza 'a': zaza 'a': zaza 'a': zaza 'a':
zaza 'a': zaza 'a':
BIO.zzazz('a');
zzaaz;
zaza 'z': zaza 'z': zaza 'z': zaza 'z':
zaza 'z': zaza 'z': zaza 'z': zaza 'z':
zaza 'z': zaza 'z': zaza 'z': zaza 'z':
zaza 'z': zaza 'z': zaza 'z': zaza 'z':
zaza 'z': zaza 'z': zaza 'z': zaza 'z':
BIO.zzazz('z');
zzaaz;
zazaazz:
BIO.zzazz((zzaz)z);
}
}
}