switch, case, default - 1

"Hi, Amigo!"

"Hi, Bilaabo! So good to see you again. Tanging ang mga lecture mo lang ang napakaganda at naiintindihan. Hindi tulad nitong Java Memory Model."

"Oo, alam ni Bilaabo kung paano pumili ng mga aralin. Ngayon sasabihin ko sa iyo ang tungkol sa switch statement."

"Sa tingin ko may nagsabi na sa akin tungkol dito."

"Si Ellie naman. So, ayaw makarinig ng leksyon ni Amigo tungkol sa switch statement? Baka mag-umpisa ka nang magturo ng sarili mo?"

"Hindi, gusto ko, gusto ko. Pakinggan natin ang switch statement."

"OK. Sa Java, mayroong tinatawag na switch statement. Maginhawa kapag kailangan mong magsagawa ng ilang partikular na pagkilos depende sa iba't ibang value ng ilang variable."

Halimbawa na may switch Katumbas na code
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

Hinahayaan ka ng switch statement na lumipat sa gustong piraso ng code kung ang variable na ipinasa dito ay tumutugma sa value na sumusunod sa case ng keyword.

Kung ako ay 1, ang pagpapatupad ay talon sa linyang may markang «case 1».

Kung ako ay 2, ang pagpapatupad ay talon sa linya na may markang «case 2».

Kung ako ay 3, ang pagpapatupad ay talon sa linya na may markang «case 3».

"Kung walang tumalon sa alinman sa mga kaso, ang «default» na bloke ay isasagawa."

"Nakikita ko. At sa kanan ay ang parehong lohika, ngunit ipinatupad gamit ang mga pahayag ng if?"

"Oo."

"And what's with the word 'break'? You said it can only be used in loops?"

"Oo, at narito. Kapag naisakatuparan ang pahayag ng break , agad kaming lumabas sa switch ."

"Ngunit kung ang break na pahayag ay tinanggal, pagkatapos ay ang lahat ng mga linya sa loob ng switch ay isasagawa hanggang sa katapusan."

Halimbawa Output (para sa i = 1) Output (para sa i = 2)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
isa
dalawa
tatlo
marami
dalawa
tatlo
marami

"Sa totoo lang, ang case ay isang label sa code. Sa switch statement, tumalon kami sa susunod na label at magsisimulang i-execute ang lahat ng code hanggang sa dulo ng switch, o hanggang makatagpo kami ng break statement."

"So, kung hindi tayo magsusulat ng break, ipapatupad ang linyang tinatakbuhan natin, na sinusundan ng lahat ng iba pang linya hanggang sa closing brace. Tama ba?"

"Oo."

"Piece of cake. But I like using if statements better. They don't have these pointless break statements."

"Totoo na kung ang mga pahayag ay madalas na mas compact. Ngunit ang isang switch statement ay minsan mas nababasa."

"Ihambing:"

Halimbawa na may switch Katumbas na code
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

"Hindi ko sasabihin na mas nababasa ito."

"Okay, pero paano ang halimbawang ito?"

Halimbawa na may switch Katumbas na code
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

"Bilaabo, mukhang hindi tama ang iyong halimbawa. So, I can omit the break statement if I use return?"

"Tama. A return statement will immediately exit the method."

"Parang kung palaging mas compact ang mga statement. Pero this time, mas readable na ang switch statement."

"Phew, sa wakas."

"Isa pa. Hindi mo kailangang isulat ang default sa dulo. Kung hindi, walang mangyayari kung walang tumutugma sa mga label."

"Uh, eksakto. Parang if-else, pero nababasa—mas nababasa!"

"Great. I'm glad nagustuhan mo ang lesson ko."

"Naku, muntik ko nang makalimutan. Noong una, maaari ka lang gumamit ng mga primitive na uri at enum sa mga switch statement. Ngunit ngayon ay nagdagdag na sila ng suporta para sa Strings."

"Ibig mong sabihin ako ang sumulat nito?"

Halimbawa
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

"Yep. Convenient diba?"

"Oo. Mahusay ang mga switch statement!"