Ако ваш Јава програм мора да изабере између две или три акције, ан ако тада још изјава ће бити довољан. Међутим ако тада још изјава почиње да се чини незгодном када постоји велики број избора које би програм могао да донесе. Има их само толико друго... ако изјаве које желите да додате пре него што код почне да изгледа неуредно. Када је потребна одлука за више опција, користите изјаву о пребацивању.
Изјава о прекидачу
Изјава о пребацивању омогућава програму да упоређује вредност ан израз на листу алтернативних вредности. На пример, замислите да имате падајући мени који садржи бројеве 1 до 4. Овисно о томе који је број изабран, желите да ваш програм уради нешто другачије:
// рецимо да корисник бира број 4
инт менуЦхоице = 4;
прекидач (мениИзбор)
{
случај 1:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 1.");
пауза;
случај 2:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 2.");
пауза;
случај 3:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 3.");
пауза;
// Ова се опција бира јер вриједност 4 одговара вриједности
// менуЦхоисе варијабла
случај 4: ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 4."); пауза;
Уобичајено:
ЈОптионПане.сховМессагеДиалог (нулл, "Нешто је пошло по злу!");
пауза;
}
Ако погледате синтаксу изјаве пребацивања, требало би да приметите неколико ствари:
1. Променљива вредност која садржи вредност са којом се мора упоредити налази се на врху, унутар заграда.
2. Свака алтернативна опција започиње с наљепницом. Вредност за поређење са врхом променљива следећи, следи дебело црево. На пример, случај 1: је ознака случаја којој следи вредност 1 - она може једнако лако да буде и у случају 123: или случају -9:. Можете имати онолико алтернативних опција колико вам треба.
3. Ако погледате горњу синтаксу, истакнута је четврта алтернативна опција - ознака слова, код који извршава (тј., ЈОптионПане) и изјава о прекиду. Изјава о прекиду означава крај кода који треба извршити. Ако погледате, видећете да се свака алтернативна опција завршава изјавом о прекиду. Врло је важно имати на уму да ставите у паузу изјаву. Размотрите следећи код:
// рецимо да корисник бира број 1
инт менуЦхоице = 1;
прекидач (мениИзбор)
случај 1:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 1.");
случај 2:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 2.");
пауза;
случај 3:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 3.");
пауза;
случај 4:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте број 4.");
пауза;
Уобичајено:
ЈОптионПане.сховМессагеДиалог (нулл, "Нешто је пошло по злу!");
пауза;
}
Оно што очекујете је да видите Дијалог говорећи "Изабрали сте број 1", али пошто не постоји изјава о прекиду која одговара првој налепници, код у другом ретку такође се извршава. То значи да ће се појавити и следећи дијалошки оквир који каже "Изабрали сте број 2".
4. На дну исказа преклопника налази се задана ознака. Ово је попут сигурносне мреже у случају да ниједна од вриједности етикета случаја не одговара вриједности која се успоређује с њом. Врло је корисно пружити начин извршења кода када није одабрана ниједна од жељених опција.
Ако увек очекујете да буде изабрана једна од других опција, тада можете изоставити подразумевану ознаку, али стављање једне на крај сваке изјаве о пребацивању је добра навика да се упустите у њу. Можда се чини мало вероватним да ће се икада користити, али грешке могу прећи у код и могу вам помоћи да ухватите грешку.
Од ЈДК 7
Једна од промена Јава синтаксе издањем ЈДК 7 је могућност коришћења Гудачи у прелазним изјавама. Способност упоређивања стрингова у преклопници може бити врло корисна:
Име низа = "Боб";
прекидач (наме.тоЛоверЦасе ())
{
случај "јое":
ЈОптионПане.сховМессагеДиалог (нулл, "Добро јутро, Јое!");
пауза;
футрола "мицхаел":
ЈОптионПане.сховМессагеДиалог (нулл, "Како иде, Мицхаел?");
пауза;
цасе "боб":
ЈОптионПане.сховМессагеДиалог (нулл, "Боб, стари мој пријатељу!");
пауза;
случај "билли":
ЈОптионПане.сховМессагеДиалог (нулл, "Поподневни Били, како су деца?");
пауза;
Уобичајено:
ЈОптионПане.сховМессагеДиалог (нулл, "Драго ми је што смо се упознали, Јохн Дое.");
пауза;
}
Ако упоређујете две вредности Стринга, може бити много лакше ако се уверите да су све у истом случају. Кориштење .тоЛоверЦасе методе значи да све вриједности ознака случаја могу бити у мала слова.
Ствари које треба запамтити о изјави о пребацивању
• Тип променљиве са којом се упоређује мора бити врста цхар, бите, схорт, инт, Цхарацтер, Бите, Схорт, Интегер, Стринг или енум.
• Вредност поред налепнице не може бити променљива. То мора бити константан израз (нпр., Инт литерал, цхар литерал).
• Вриједности сталних израза на свим ознакама словима морају бити различите. Следеће би резултирало грешком у времену превођења:
прекидач (мениИзбор)
{
случај 323:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте опцију 1.");
пауза;
случај 323:
ЈОптионПане.сховМессагеДиалог (нулл, "Изабрали сте опцију 2.");
пауза;
• У изводу пребацивања може постојати само једна подразумевана ознака.
• Када користите објект за изјаву о пребацивању (нпр. Стринг, цео број, знак), уверите се да није нула. Нулти предмет ће резултирати грешком током извршавања када се изврши преклопник.