Използване на заявлението за превключване за множество възможности за избор в Java

Ако вашата програма Java трябва да направи избор между две или три действия, ако, тогава, друго изявление ще е достатъчен както и да е ако, тогава, друго изявление започва да се чувства тромаво, когато има редица решения, които може да се наложи да направи една програма. Има само толкова много друго... ако изявления, които искате да добавите, преди кодът да започне да изглежда неудобен. Когато е необходимо решение за множество опции, използвайте оператора за превключване.

Изявление за превключване

Компонентът за превключване позволява на програмата възможността да сравнява стойността на изразяване към списък с алтернативни стойности. Например, представете си, че имате падащо меню, което съдържаше числата от 1 до 4. В зависимост от това кой номер е избран, искате вашата програма да направи нещо различно:

// да кажем, че потребителят избира номер 4
int menuChoice = 4;
превключвател (меню Избор)
{
случай 1:
JOptionPane.showMessageDialog (null, „Избрахте номер 1.“);
прекъсване;
случай 2:
JOptionPane.showMessageDialog (null, „Избрахте номер 2.“);
instagram viewer

прекъсване;
случай 3:
JOptionPane.showMessageDialog (null, „Избрахте номер 3.“);
прекъсване;
// Тази опция се избира, защото стойността 4 съвпада със стойността на
// променливата на менюто
случай 4: JOptionPane.showMessageDialog (null, „Избрахте номер 4.“); прекъсване;
по подразбиране:
JOptionPane.showMessageDialog (null, "Нещо се обърка!");
прекъсване;
}

Ако погледнете синтаксиса на оператора за превключване, трябва да забележите няколко неща:

1. Променливата, съдържаща стойността, която трябва да бъде сравнена, се поставя в горната част, вътре в скобите.

2. Всяка алтернативна опция започва с етикет. Стойността, която трябва да се сравнява с върха променлив идва следващо, последвано от двоеточие. Например, случай 1: е етикетът на случаите, последван от стойността 1 - също толкова лесно може да бъде случай 123: или случай -9:. Можете да имате колкото се може повече алтернативни опции.

3. Ако погледнете горния синтаксис, се откроява четвъртата алтернативна опция - етикета на регистъра, кода, който изпълнява (т.е. JOptionPane) и декларация за прекъсване. Декларацията за прекъсване сигнализира за края на кода, който трябва да бъде изпълнен. Ако погледнете, ще видите, че всяка алтернативна опция завършва с декларация за прекъсване. Много е важно да не забравяте да включите в декларацията за почивка. Помислете следния код:

 // да кажем, че потребителят избира номер 1
int menuChoice = 1;
превключвател (меню Избор)
случай 1:
JOptionPane.showMessageDialog (null, „Избрахте номер 1.“);
случай 2:
JOptionPane.showMessageDialog (null, „Избрахте номер 2.“);
прекъсване;
случай 3:
JOptionPane.showMessageDialog (null, „Избрахте номер 3.“);
прекъсване;
случай 4:
JOptionPane.showMessageDialog (null, „Избрахте номер 4.“);
прекъсване;
по подразбиране:
JOptionPane.showMessageDialog (null, "Нещо се обърка!");
прекъсване;
}

Това, което очаквате да се случи, е да видите a диалогов прозорец казвайки „Избрахте номер 1“, но тъй като няма декларация за прекъсване, съответстваща на етикета на първия регистър, кодът във втория случай също се изпълнява. Това означава, че следващият диалогов прозорец с надпис "Избрахте номер 2" също ще се появи.

4. В долната част на оператора за превключване има етикет по подразбиране. Това е като предпазна мрежа в случай, че никоя от стойностите на етикетите на регистъра не съответства на стойността, която се сравнява с нея. Много е полезно да предоставите начин за изпълнение на код, когато не е избрана нито една от желаните опции.

Ако винаги очаквате някоя от другите опции да бъде избрана, тогава можете да изключите етикета по подразбиране, но да поставите такъв в края на всяко създадено от вас превключвателно изявление е добър навик да влизате. Може да изглежда малко вероятно някога да бъде използван, но грешките могат да пропълзят в кода и това може да помогне за улавяне на грешка.

От JDK 7

Една от промените в синтаксиса на Java с пускането на JDK 7 е възможността за използване Strings в отчетите за превключване. Възможността да сравните стойностите на низовете в оператора на превключвателя може да бъде много удобна:

Име на низ = "Боб";
превключвател (name.toLowerCase ())
{
случай "Джо":
JOptionPane.showMessageDialog (null, "Добро утро, Джо!");
прекъсване;
случай "michael":
JOptionPane.showMessageDialog (null, "Как върви, Майкъл?");
прекъсване;
случай "bob":
JOptionPane.showMessageDialog (null, "Боб, мой стар приятел!");
прекъсване;
случай "Били":
JOptionPane.showMessageDialog (null, "Следобед Били, как са децата?");
прекъсване;
по подразбиране:
JOptionPane.showMessageDialog (null, „Радвам се да се запознаем, Джон Доу.“);
прекъсване;
}

Когато сравнявате две стойности на String, може да бъде много по-лесно, ако се уверите, че всички те са в един и същи случай. Използването на .toLowerCase метод означава, че всички стойности на етикета на регистъра могат да бъдат в с малки букви.

Неща, които трябва да запомните за изявлението за превключване

• Типът на променливата, с която трябва да се сравнява, трябва да бъде тип char, byte, short, int, Character, Byte, Short, Integer, String или enum.

• Стойността до етикета на регистъра не може да бъде променлива. Той трябва да бъде постоянен израз (например, int литерал, char literal).

• Стойностите на постоянните изрази във всички етикети трябва да са различни. Следното би довело до грешка във времето на компилиране:

превключвател (меню Избор)
{
дело 323:
JOptionPane.showMessageDialog (null, „Избрахте вариант 1.“);
прекъсване;
дело 323:
JOptionPane.showMessageDialog (null, „Избрахте вариант 2.“);
прекъсване;

• В оператора за превключване може да има само един етикет по подразбиране.

• Когато използвате обект за оператора за превключване (напр. String, Integer, Character), уверете се, че не е нула. Един нулев обект ще доведе до грешка по време на изпълнение при изпълнение на оператора на превключвателя.