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 කරනකොට.

Friday, September 23, 2016

1d arrays

20 වන පාඩම(1d arrays)
Data store කර තියාගන්න ලේසි විදියක් මේක. වගේම පහසුවෙන් data වලට acces වෙන්නත් පුලුවන්.එකම ටයිප් එකේ data store කරගන්න නිසා array එක තුල data compare කරන්න,max,min,sort වගේ දේවල් පහසුවෙන් හොයන්න කරන්න පුලුවන්.
මුලින්ම බලමු කොහොමද array එකක් initialize කරන්නෙ කියල.
int array[]=new int[5];
මෙතනදි වමේ  [] එක int  ගාවින් ලියන්නත් පුලුවන්.
int[] array=new int[5];
මෙතනදි array type එක integer සහ size එක 5.
මේකෙන් අදහස් වෙන්නෙ array එකේ 0,1,2,3,4 වෙනකන් integer element දාන්න පුලුවන්.මතක තියාගන්න array වල index පටන්ගන්නෙ 0 ඉදන් කියල.size එක n නම් index තියනව 0 සිට n-1 වෙනතුරු. වගේම මෙතනදි හැම index එකකම තියන data value එක 0. Integer  array වල    default අගය ගන්නෙ 0.
 දැන්  index වලට  අදාලව data දෙන්න ඕනි. අපිට කැමති පිලිවෙලකට data දෙන්න පුලුවන්. වගේම නැවත නැවත data වෙනස් කරන්න පුලුවන්

public class ArrayDemo
 {
            public static void main(String[] args)
            {         
            int array[]=new int[5];
                        array[2]=15;
                        array[3]=16;
                        array[4]=17;
                        array[0]=10;
                        array[1]=11;
                       
                        System.out.println(array[0]);
                        System.out.println(array[1]);
                        System.out.println(array[2]);
                        System.out.println(array[3]);
                        System.out.println(array[4]);
                        array[0]=3;
                        array[1]=5;
                        array[3]=4;
                        array[2]=8;
                        array[4]=9;
                        System.out.println(array[0]);
                        System.out.println(array[1]);
                        System.out.println(array[2]);
                        System.out.println(array[3]);
                        System.out.println(array[4]);
            }
}
මෙතනදි data user ගෙන් read කරන්නත් පුලුවන්.
තව විදියකට Array initialize කරන්න පුලුවන්.

public class ArrayDemo2
 {
            public static void main(String[] args)
            {         
            int array[]={7,8,1,6,5};
                        System.out.println(array[0]);
                        System.out.println(array[1]);
                        System.out.println(array[2]);
                        System.out.println(array[3]);
                        System.out.println(array[4]);
                       
            }
}
මෙතනදි {} තුල අපට ඕන data ටික දැම්මම ඊට අදාල index වලට පිලිවෙලින් data allocate  වෙනව.
දැන් for-loop,while-loop බාවිත කරානම් තවත් ලේසියි නේද.
දැන් අපිට කැමති size එකක array එකක් හදල ඒකට value read කරල ප්රින්ට් කරමු.

import java.util.*;
public class ArrayDemo2
 {
            public static void main(String[] args)
            {         
            Scanner s=new Scanner(System.in);
            System.out.println("enter array size");
            int n=s.nextInt();
            int[] array=new int[n];
                        for(int i=0;i<n;i++)
                        {
                                    System.out.print("enter element for index"+i+": ");
                                    array[i]=s.nextInt();
                        }
                       
                        System.out.println("here the array elements ");
                        for(int i=0;i<n;i++)
                        {
                                    System.out.println("index"+i+"= "+array[i]+" ");
                        }
            }
}
දැන් බලමු අනෙක් data type වල array හදන්නෙ කොහොමද කියල.

String s[]=new String[5];
                        s[0]="one";
                        s[1]="two";
                        System.out.println(s[0]);
                        System.out.println(s[1]);
                       
                        String s2[]={"one","two"};
                        System.out.println(s2[0]);
                        System.out.println(s2[1]);
                       

String වලදිත් ඉහත ආකාර දෙකෙන්ම හදන්න පූලුවන්.දෙවනි විදියට හදන්කොට “ ” පාවිච්චි කල යුතු වෙනව.
Char වල array හදන්නෙ කොහොමද බලමු.

char ch[]={'1','5'};
            char ch2[]=new char[5];
‘ ‘  බාවිත  වෙනව මෙතනදි.පටලව ගන්නෙපා string වලදි “ “
           
           
           
            double dd[]=new double[20];
            long ll[]=new long[20];
            float ff[]=new float[20];

මතක තියාගන්න  array වල size එක fix කියල.
අපි array එකක් හැදුවම ඒකෙ size එකට වඩ වැඩියෙන් දැම්මොත් out of bound වෙනව කියල.ඒ වගේම size එකට වැඩියෙන් index access කරන්න හැදුවත්  out of bound වෙනව කියල.