Thursday, July 28, 2016

switch-case

18 වන පාඩම(switch-case)

මේ switch එක හරියට if condition ගොඩක එකතුවක් වගේ. සමානකමයි මොකක්ද වෙනස කියලත් බලමු.
හිතන්න.int i=6 කියල variable එකක් තියනව.
If වලදි බාවිත කරනව  if(i==6){} යන ආකාරය.switch-case එකේදි අපි එක එක case එකත් එක්ක සමානවෙනවද කියල බලල සමාන අවස්තාවට අදාල statement ටික execute කරනව.
මෙතනදි case ඇතුලෙ statement ගොඩක් තියන අවස්තාවක {} අවශ් නෑ.පහල code එකේ case එකකට අදාලව statement දෙකක් තියනව.මතක තියාගන්න ඉන්පුට් දෙනකොට එක character එකක් විතරක් දෙන්න.
මොකද string එකක් දුන්නත් (“+ghj” වගෙ )code එක වැඩ කරනව.එහෙම ස්ට්‍රින්ග් ඉන්පුට් කරාම වෙන වැරැද්ද අල්ලන්න code එක ලිව්වෙ නෑ තේරුම්ගන්න අමාරු වෙන නිසා.

import java.util.Scanner;
public class Demo
 {
            public static void main(String[] args)
            {
                        Scanner s=new Scanner(System.in);
                        System.out.println("enter one character");
                        char c=s.next().charAt(0);
                       
                        switch(c)
                        {
                        case 'A':           System.out.println("user input A");
                                                            break;
                        case 'a' :System.out.println("user input a");
                                                            break;
                        case 'B':           System.out.println("user input B");
                                                            break;
                        case 'b' :System.out.println("user input b");
                                                            break;
                        case '+':            System.out.println("user input +");
                                                            break;
                        case '-' :System.out.println("user input -");
                                                            break;
                        default :System.out.println("other input");
                        }
            s.close();
            }
}
මේකෙ break දාල තියනව පේනවද.ඒකෙන් කරන්නෙ case එක සත්‍ය උනාම ඊට පහල case එක්ක check කරන එක නවත්වන්න.break කියන keyword අයින් කරල බලන්න.මොකද වෙන්නෙ කියල.
·         enter one character
+
user input +

break අයින් කරල රන් කරොත් පහල අවිත් තියනව වගෙ output එකක් එයි.
enter one character
+
user input +
user input -
other input

මේකෙ default එකෙන් කරන්නෙ case එකක්වත් සත්‍ය නොවුනොත් කරන දේ.

මන් s.close(); කියල දාල තියෙන්නෙ scanner එක close කරන්න.එහෙම කරාම resources නාස්ති වෙන එක වලකිනව.
Int long, string,float සහ අනෙක් variable type වලටත් යොදාගන්න පුලුවන් switch-case.
import java.util.Scanner;
public class Demo1
 {
                public static void main(String[] args)
                {
                                Scanner s=new Scanner(System.in);
                                System.out.println("enter integer number");
                                int c=s.nextInt();
                               
                                switch(c)
                                {
                                case 1:  System.out.println("user input 1");
                                                                                break;
                                case 2 :System.out.println("user input 2");
                                                                                break;
                                case 3:  System.out.println("user input 3");
                                                                                break;
                                case 10 :System.out.println("user input 10");
                                                                                break;
                               
                                default :System.out.println("other input");
                                }
                               
                                s.close();
                }

}

break & continue

17 වන පාඩම(break,continue)
Break කියන keyword එක ජාවා වලදි යොදාගන්නව loop වලදි loop break කරන්න.
පහල code එක main මෙතඩ් එකේ type කරල රන් කරල බලන්න programe එක.
int i=0;
            while(i<5)
            {
            System.out.println(i);
            if(i==3)break;
            i++;
            }
මෙතනදි වෙන්නෙ i=3 අවස්තාවෙදි loop එක නතර වෙන එක.break උනාම while-loop ඇතුලෙ ඊට පහලින් තියන statement  වැඩ කරන්නෙත්  නෑ.while-loop එකත් එතනින් නතර වෙනව.for-loop,switch-case වලටත් මෙහෙම යොදාගන්න පුලුවන්.
ඉහත code එකේ output එක
 1
 2
 3  කියල එන්න ඕනි .
ඊලගට බලමු continue කියනෙක ගැන.
int i=0;
            while(i<5)
            {
           
            i++;
            if(i==3)continue;
            System.out.println(i);
            }
මෙත්නදි i=3 වෙන අවස්තාවෙදි while –loop එක තුල ඊලගට තියන පහල statement මගහැර යනව.හැබැයි loop එක නතර වෙන්නෙ නෑ.
1
2
4
5 කියල output එක එයි.

දැන් හිතන්න for-loop එකක් ඇතුලෙ  තව  for-loop එකක් තියනකොට break statement එක දැම්මොත් මොනව වෙයිද කියල.
එතනදි break වෙන්නෙ එක for-loop එකයි .
            for(int i=0;i<5;i++)
            {
                        for(int k=0;k<5;k++)
                        {
                                   
                                    System.out.print(k);
                        }System.out.println();
            }
නොර්මල් විදියට print කරොත් මේ code එක වගෙ
01234
01234
01234
01234
01234
කියල එනව.i=3 නම් අතුලෙ loop එකට break එකක් දාමු.
for(int i=0;i<5;i++)
            {
                        for(int k=0;k<5;k++)
                        {
                                    if(i==3)break;
                                    System.out.print(k);
                        }System.out.println();
            }

දැන් output එක
01234
01234
01234

01234
ලෙස එනව.තුන්වන පේලියෙන් පස්සෙ empty line  එකක් එනව.i=3 ඇතුලෙ loop එක විතරක් නතරවෙනව.එතකොට පිටින් තියන System.out.println(); එකෙන් තමයි empty line  එකක් එන්නෙ.i=4
දි නැවත 01234 එනව.

තව විදියක් තියනව loop break කරන.එතනදි වැඩි ලෝප් ගානක් එකපාර break කරන්න පුලුවන්.
nalaka:
            for(int i=0;i<5;i++)
            {
                        for(int k=0;k<5;k++)
                        {
                                    if(i==3)break nalaka;
                                    System.out.print(k);
                        }System.out.println();
            }
මෙතන highlight කරපු වචනෙ වෙනුවට වෙන ඕනම වචනයක් දෙන්න keyword හැර.මෙතනදි nalaka කියනෙක define කරපු තැනට යනකන් තියන for-loop break වෙනව.


Thursday, July 21, 2016

(variables scope)වේරියබල් ස්කෝප් ගැන තොරතුරු.

16 වන පාඩම(variables scope)
 මේ losson එක ගොඩක් වැදගත්.
ජාවා වලදි එකපාරක් declare කරාම සමහර අවස්තාවල නැවත declare කරොත් compile error එනව. error වලක්වගෙන නැවත declare කරන්න පුලුවන් මේ lesson එකේ දැනුම තියනවනම්.
වගෙම සමහර variable declare කරල තිබුනත් error: cannot find symbol කියල error එකක් එනව.

මේ error දෙකටම හේතු වන කරුනක් තමයි variables scope .
 අපි { open කරනවනෙ.ඊලගට අවසනෙදි  } මගින් වහනව.මේ braces අතරෙ යම් දෙයක් declare කරොත් use කරන්න පුලුවන් { සහ } අතරෙදි පමනයි කියනෙක තමයි සරලම අදහස.බලමු example එකක්.

public class sol
{
            public static void main(String args[])
            {
            for(int i=0;i<5;i++)      
            {
            System.out.println(i);  
            }

            System.out.println(i);
            }
}
ඔයාල මේ code එක compile  කරොත් error එකක් එයි මන් කලින් කියපු  .
පේනවද i declare කරල තියනව කියල.නමුත් i use කරන්න පුලුවන් for loop එකෙ { සහ } අතර විතරයි.
 Red වලින් highlight කරපු ටික අයින් කරල try කරන්න.එතකොට එරර් එක නැතිවෙනව පෙනෙයි.

ඔයාලට තේරෙනව ඇති i scope එක තියෙන්නෙ for loop එකෙ { සහ } අතර විතරයි කියල.දැන් ප්රශ්නෙ කොහොමද i වල අගය print කරන්නෙ loop එකෙන් පිටදි කියල.
කරන්න තියෙන්නෙ i for-loop  එකට කලින් declare කරනෙක.


public class sol
{
            public static void main(String args[])
            {
                        int i;
            for(i=0;i<5;i++)           
            {
            System.out.println(i);  
            }

            System.out.println(i);
            }
}
දැන් කිසිම එරර් එකක් එන්නෙ නෑ නේද?.ඔයාලට පේනව ඇති කලින් for loop එකෙ for(int i=0;i<5;i++)
කියල තමයි යෙදුවෙ .ඒත් දැන්    (i=0;i<5;i++)     කියල.හේතුව තමයි i වල අගය for-loop එකට කලින් declare කරපු එක.කලින් I වල  scope එක  for loop එකෙ { සහ } අතර විතරයි.

දැන් I වල  scope එක  main මෙතඩ්  එකෙ { සහ } අතර. නිසා main මෙතඩ්  එකෙ { සහ } ඕනම තැනකදි I use කරන්න පුලුවන්,මතක තියාගන්න declare කරපු තැන ඉදන් පහලට කියල.
0
1
2
3
4
5
කියල output එක එයි.
I=5 අවස්තාවෙදි loop එක ඇතුලට යන්නෙ නෑ.පිටින් තියන print එකෙන් තමයි 5 print වෙන්නෙ.

දැන් බලමු එකපාරක්  declare කරල තවපාරක් declare කරන්න පුලුවන් කොහොමද කියල.

public class sol
{
            public static void main(String args[])
            {
                       
            for(int i=0;i<5;i++)      
            {
            System.out.println(i);  
            }

            int i=8;
            System.out.println(i);
            }
}
මෙතනදි කිසිම වරදක් නැතුව compile වෙයි.මෙතනත් scope එකේ concept එක යොදාගෙන තියෙනව.
for(int i=0;i<5;i++) එකේ I වල scope එක ඒකෙ {} අතර නමුත් for-loop එක ඉවරවෙලා declare කරපු I වල scope එක එතන ඉදන් පහලට තියෙන්නෙ main method එක ඇතුලෙ. නිසා තමයි error එකක් නොවෙන්නෙ මෙතනදි.
Output එක
0
1
2
3
4
8
කියල එයි.දැන් තවත් තෙරුම්ගන්න පහල code එක බලන්න.
public class sol
{
            public static void main(String args[])
            {
            int i=8;
            for(int i=0;i<5;i++)      
            {
            System.out.println(i);  
            }

           
            System.out.println(i);
            }
}

දැන් error එකක් එයි.ඔයාලට තේරෙනව ඇති මුලින්ම declare කරල  initialize කරල තියන I වල scope එක main මෙතඩ් එකේ {} අතර තියනව declare කරපු තැන ඉදන්. scope එක ඇතුලෙ තමයි for-loop එක තියෙන්නෙත්. නිසා තමයි නැවත declare කරල තියනව කියල error එකක් එන්නෙ.
පහල code එකෙත් බලන්න වැරැද්ද..

public class sol
{
            public static void main(String args[])
            {
                        {
                                    int i=5;//scope of i start here
                                    System.out.println(i);
                                   
                        }//scope of i end here 
            System.out.println(i);//cannot use i here.
            }
}
පහල example එකත් බලන්න.ඒකෙදි නිවරදියි code එක.
public class sol
{
            public static void main(String args[])
            {
                        {
                                    int i=5;
                                   
                                    {
                                                System.out.println(i);
                                    }
                                    System.out.println(i);
                        }
           
            }
}
For-loop ඇතුලෙ තවත් For-loop use කරනකොට නිවැරදිව කරගන්න පුලුවන් වෙයි මේ lesson එකෙන් පසුව.
වගෙම do-while ,while වලටත්.

ඉදිරියෙදි object oriented concept කරනකොට මේ දැනුම වැදගත් වෙනව.