Monday, October 24, 2016

2d array,jagged array

22-වනපාඩම(2d array)
2d array 1ක් කියන්නෙහරියට array ගොඩක එකතුවක් කියල හිතන්නත් පුලුවන්.                      
0,0
0,1
0,2
0,3
1,0
1,1
1,2
1,3
2,0
2,1
2,2
2,3
3,0
3,1
3,2
3,3

මුලින්ම  බලමු මේකෙ index අගයන් ගැන.මේ රූපෙ තියනව row 4 ,column 4.
Index පටන්ගන්නෙ 0,0 න් .මුලින්ම ලියන්නෙ  row අගය.ඊලගට column අගය .දැන් බලමු කොහොමද 2d array එකක් හදන්නෙ කියල.

int arr[][]=new int[3][4];
int[][] arr2=new int[3][4];

මේ විධි  දෙකේදිම row =3,column=4 වන array එකක් තමයි හදල තියෙන්නෙ.
මේ array එකට data දාන්න for-loop 2කින් පුලුවන්.බලන්න පහල code එක.0 ඉඳන් data දාල තියනව.

public class ArrayDemo5
 {
            public static void main(String[] args)
            {         
                        int arr[][]=new int[3][4];
                        //int[][] arr2=new int[3][4];
                        int k=0;
                        for(int i=0;i<3;i++)
                        {
                                    for(int j=0;j<4;j++)
                                    {
                                                arr[i][j]=k;
                                                k++;
                                    }
                        }
                        for(int i=0;i<3;i++)
                        {
                                    for(int j=0;j<4;j++)
                                    {
                                                System.out.print(arr[i][j]+" ");
                                    }System.out.println();
                        }

            }
}
මේ data user ගෙන් read කරල store කරන්න.scanner (s )එකක් හදල s.nextInt() මෙතඩ් එක මගින්.
කැමති column,row ගානක් දීල.print කරනකොට පිලිවෙලට print කරන්න ඉහත විධියට කරන්න පුලුවන්.

ඊලග විධිය බලමු.
public class ArrayDemo6
 {
            public static void main(String[] args)
            {         
           
                        int arr[][]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
                       
                        for(int i=0;i<arr.length;i++)
                        {
                                    for(int j=0;j<arr[i].length;j++)
                                    {
                                                System.out.print(arr[i][j]+" ");
                                    }System.out.println();
                        }

            }
}
Output:
0 1 2 3
4 5 6 7
8 9 10 11
මෙතනදිත් කලින් array එකම තමයි හදල තියෙන්නෙ.{ } වරහන් මගින් අවශ්‍ය ප්‍රමානයට data දෙන්න පුලුවන්.මෙතනදි වෙනස් column ගානක් දෙන්න පුලුවන් row වලට අදාලව.

Arr.length –row size එක හොයන්න පුලුවන්
arr[i].length-row එකට අදාලව column size එක හොයන්න පුලුවන්.jagged array හසුරවන්න පහසුයි මේ මගින්.

Jagged array

int arr[][]={{0,1,2},{4,5,6,7,4,5},{8,9,10,11}};

මෙන්න මේ වගෙ array වලට කියන්නෙ jagged array කියල.
Public class ArrayDemo6
 {
            public static void main(String[] args)
            {         
           
                        int arr[][]={{0,1,2},{4,5,6,7,4,5},{8,9,10,11}};
                       
                        for(int i=0;i<arr.length;i++)
                        {
                                    for(int j=0;j<arr[i].length;j++)
                                    {
                                                System.out.print(arr[i][j]+” “);
                                    }System.out.println();
                        }

            }
}

Output:
0 1 2
4 5 6 7 4 5
8 9 10 11
බලන්න මුල්ම row එකේ  අගයන් 3 ,දෙවනි එකේ 6,අවසාන එකේ 4.

අනෙක් විදිය බලමු jagged array හදන විදිය.
int arr[][]=new int[3][];
                        arr[0]=new int[4];
                        arr[1]=new int[2];
                        arr[2]=new int[7];
row  size එක විතරක් මුලින්ම දෙනව.
ඊලගට එක එක row එකට අදාලව column size දෙනව.

public class ArrayDemo6
 {
            public static void main(String[] args)
            {         
           
                        int arr[][]=new int[3][];
                        arr[0]=new int[4];
                        arr[1]=new int[2];
                        arr[2]=new int[7];
                       
                        for(int i=0;i<arr.length;i++)
                        {
                                    for(int j=0;j<arr[i].length;j++)
                                    {
                                                System.out.print(arr[i][j]+" ");
                                    }System.out.println();
                        }

            }
}

Output:මන් data දාල නැති නිසා int වල default අගය තමයි ප්‍රින්ට් වෙන්නෙ.
0 0 0 0
0 0
0 0 0 0 0 0 0

මේ ක්‍රම බාවිත කරල  user ගෙන් කැමති column size ,value අරන් jagged array හදන්න පුලුවන්.
                       


Saturday, October 22, 2016

1d array හැසිරවීම ලේසි කරගන්නෙ කොහොමද ?

21- වන පාඩම(1d array හැසිරවීම  ලේසි කරගන්නෙ කොහොමද ?  )






public class ArrayDemo3
 {
 public static void main(String[] args)
 {

 String ar[]=new String[3];
 System.out.println("default="+ar[0]);

 char ar2[]=new char[3];
 System.out.println("default="+ar2[0]);

 byte ar3[]=new byte[3];
 System.out.println("default="+ar3[0]);

 long ar4[]=new long[3];
 System.out.println("default="+ar4[0]);

 }
}


Output:
default=null
default=
default=0
default=0



ඉහත code එක බැලුවම තේරෙනව ඇති කොහොමද array හැදුවම තියන default වැලියු මොනවද කියල.
දැන් බලමු 1d array වල length ගන්න විදිය ,sort,මුලු array එකම ප්රින්ට් කරන්නෙ කොහොමද කියල.

මෙතනදි මුලින්ම util package  එකේ Arrays Class එක ඉම්පොර්ට් කරගන්න ඕනි.length එක ගන්නකොට සහ සමහර මෙතඩ් වලට මේ ඉම්පෝර්ට් කිරීම අවශ්ය නෑ,බලන්න පහල code එක. මන් example එකට ගත්තෙ long type array.


import java.util.Arrays;
public class ArrayDemo3
 {
 public static void main(String[] args)
 {
  long ar4[]=new long[3];
 ar4[0]=5;
 ar4[1]=3;
 ar4[2]=7;
 System.out.println("ori. array="+Arrays.toString(ar4));
 Arrays.sort(ar4);
 System.out.println("sor. array="+Arrays.toString(ar4));
       
        int fromIndex=1,end=3;
        ar4[0]=25;
 ar4[1]=10;
 ar4[2]=7;
        System.out.println("ori. array="+Arrays.toString(ar4));
        Arrays.sort(ar4, fromIndex, end);
        System.out.println("sor. array range"+Arrays.toString(ar4));
       
       
        long ar5[]=new long[3];
        System.arraycopy(ar4, 0, ar5, 0, ar4.length);//get array copy
        System.out.println(Arrays.equals(ar4, ar5));//check  2 arrays have equal type,length,values
         
        System.out.println("mem. ad="+ar4);
        System.out.println("mem. ad="+ar5);
        System.out.println(ar4.equals(ar5));//to equal memory addr. should be same
        ar4=ar5;
        System.out.println(ar4.equals(ar5));
         System.out.println("mem. ad="+ar4);
         System.out.println("mem. ad="+ar5);
       
      long  ar6[]=Arrays.copyOf(ar4, 2);
        System.out.println("array ar6="+Arrays.toString(ar6));
       
       System.out.println("index" +Arrays.binarySearch(ar4, 7));
       System.out.println("index =" +Arrays.binarySearch(ar4, 111));
 }
}






Arrays.toString(arrayname)  -array  එක ප්රින්ට් කරන්න ගන්නව.



Arrays.sort(arrayname) – මුලු array  එකම  sort කරන්න ගන්නව.




Arrays.sort(arrayname, fromIndex, end)- array  එක sort කරනව එක් පරාසයක .



System.arraycopy(source, srcPos, destination, destPos, length)-array එකක කොපියක් ගන්න බාවිත කරනව .මුලින්ම source array  එක, source array position එක, destination    array එක, destination array position එක, array length එක.



Arrays.equals(ar4, ar5) –array 2ක් සමානද බලන්න යොදගන්නව.මෙතනදි array 2ක් වෙනස් memory address වල තියනකොට එ 2කේ type,length,value සමාන වෙනවනම් true කියල return කරනව.නැත්නම් false



ar4.equals(ar5) – true කියල return කරන්නෙ ඒවගෙ memory address, type,length,value සමාන වෙනවනම්



Arrays.copyOf(ar4, lengthneed)- array එකක අවශ්ය length එකක කොපියක් ගැනීමට.



Arrays.binarySearch(ar4, key)- array එකක element එකක් තිබේදැයි බැලීමට




Array බාවිතයෙදි try-catch යොදාගන්න.




public class ArrayDemo4
 {
 public static void main(String[] args)
 {

  try
  {
   long ar4[]=new long[3];
  ar4[0]=5;
  ar4[1]=3;
  ar4[2]=7;
  //System.out.println(ar4[3]);
  //System.out.println(ar4[-3]);
  //ar4[8]=4;
  }
  catch(Exception e)
  {
   System.out.println(e);
  }
 }
}





මන් comment දාල තියන ඒව අයින් කරල එකින් එක compile කරකර run කරල බලන්න.
Compile කරනකොට compile උනත් රන් වෙනකොට error එන මේ වගෙ තැන් වලදි  try-catch බාවිතයෙන් මොකක්ද අව්ල කියල හොයගන්න පුලුවන් වෙනව.
වැරදි විදියට index බාවිතය ගොඩක් වෙලාවට සිදුවෙනව array use කරනකොට.