public class Main {
public static void main(String[] args) {
int value = 1;
if (value == 1) {
System.out.println("Value was 1");
} else if (value == 2) {
System.out.println("Value was 2");
} else {
System.out.println("Was not 1 or 2");
}
}
}
po uruchomieniu w oknie konsoli wyświetla się: Value was 1
public class Main {
public static void main(String[] args) {
int value = 2;
if (value == 1) {
System.out.println("Value was 1");
} else if (value == 2) {
System.out.println("Value was 2");
} else {
System.out.println("Was not 1 or 2");
}
}
}
po uruchomieniu w oknie konsoli wyświetla się: Value was 2
public static void main(String[] args) {
int value = 3;
if (value == 1) {
System.out.println("Value was 1");
} else if (value == 2) {
System.out.println("Value was 2");
} else {
System.out.println("Was not 1 or 2");
}
}
}
po uruchomieniu w oknie konsoli wyświetla się: Value was not 1 or 2.
Jeśli mamy do przetestowania dużą liczbę wartości, możemy użyć alternatywy dla powyższego kodu, tzw. „switch statement”, który jest złożony z: „switch” keyword, wartości, którą chcemy przetestować (nazwy zmiennej lub wyrażenie), code block {}, w którym umieszczamy słowo „case”, następnie określamy co chcemy przetestować ( w naszym przypadku jest to liczba 1), „case” jest odpowiednikiem zdania z użyciem „if” i określa, że jeśli wartość była równa 1, wyświetla się kod, jaki chcemy np. w przypadku polecenia: System.out.println(„Value was 1”) wyświetli się Value was 1. Następnie umieszczamy „break” keyword, który kończy „switch statement”. Do oznaczenia każdej innej wartości używamy „default:” keyword.
int switchValue = 1;
switch (switchValue){
case 1:
System.out.println("Value was 1");
break;
case 2:
System.out.println("Value was 2");
break;
default:
System.out.println("Was not 1 or 2");
break;
}
w konsoli wyświetla się: Value was 1.
Jak można zauważyć obydwa: „if statement” i „switch statement” mogą osiągnąć te same rezultaty. „if (value == 1)” jest odpowiednikiem ” switch (switchValue){ case 1:”
„if statement” jest trochę elastyczniejszy, ponieważ za każdym razem jak testujemy np. „value == 1” nie musimy używać wciąż tych samych kryteriów, w drugim przypadku po else może być inna zmienna do przetestowania. w przypadku „switch statement” testujemy tylko jedną zmienną, w naszym przypadku o nazwie switchValue testujemy różne liczby dla tej samej zmiennej.
Jeśli mamy więcej wartości do przetestowania możemy posłużyć się skrótem:
int switchValue = 3;
switch (switchValue){
case 1:
System.out.println("Value was 1");
break;
case 2:
System.out.println("Value was 2");
break;
case 3: case 4: case 5:
System.out.println("was a 3, or a 4, or a 5");
break;
default:
System.out.println("Was not 1 or 2");
break;
wówczas w konsoli wyświetla się : was a 3, or a 4, or a 5.
Po wpisaniu dodatkowego polecenia System.out.println(„Actually was a ” + switchValue);
int switchValue = 3;
switch (switchValue){
case 1:
System.out.println("Value was 1");
break;
case 2:
System.out.println("Value was 2");
break;
case 3: case 4: case 5:
System.out.println("was a 3, or a 4, or a 5");
System.out.println("Actually was a " + switchValue);
break;
default:
System.out.println("Was not 1 or 2");
break;
}
w konsoli pojawia się: „was a 3, or a 4, or a 5
Actually was a 3”.
Istotne jest by umieszczać „break” na każdym etapie testowania, jedynie można opuścić ostatni „break”, co nie wpłynie na wynik kodu. Za zmienną switchValue może przyjmować proste wartości z zakresu: bite, short, char, int.
Zadanie
Utwórz nowe „switch statement” używając „char” zamiast „int”, utwórz nową zmienną typu char; utwórz nowe „switch statement” wykonujące test na A,B,C,D i E; wyświetl wiadomość jeśli któreś z A,B,C,D czy E zostanie znaleziona i zakończ „switch statement”, następnie użyj „default”, które wyświetla wiadomość:”not found”.
Moje rozwiązanie:
char switchValue1 = 'A';
switch (switchValue1){
case 'A':
System.out.println("A was found");
break;
case 'B':
System.out.println("B was found");
break;
case 'C':
System.out.println("C was found");
break;
case 'D':
System.out.println("D was found");
break;
case 'E':
System.out.println("E was found");
break;
default:
System.out.println("A,B,C,D or E was not found");
break;
}
lub:
char switchValue1 = 'A';
switch (switchValue1){
case 'A':
System.out.println("A was found");
break;
case 'B':
System.out.println("B was found");
break;
case 'C': case 'D':case 'E':
System.out.println( switchValue1 + "was found");
default:
System.out.println("A,B,C,D or E was not found");
break;
}