জাভা অ্যারে – Java Array

বিদ্রঃ লেখাটি প্রোগ্রামিং এ Array ও এর ব্যবহার  এর একটু মডিফাইড রুপ। মডিফাইড বললেও ভুল হবে। শুধু কোড গুলো জাভাতে লেখা। ঐ পোস্টে কোড গুলো ছিল সি প্রোগ্রামিং এ লেখা। আর কিছুই না 🙂 

আমরা একটা প্রোগ্রামের চিন্তা করি, যেটায় ইউজার থেকে দুইটা নাম্বার নিয়ে যোগ করে তা রিটার্ন / প্রিন্ট করবে বা কনসোলে দেখাবে।

সহজেই আপনি প্রোগ্রামটা লিখে পেলতে পারবেন তাই না? দুটি ভ্যারিয়েবল নিলাম, তারপর তা যোগ করে প্রিন্ট করলাম। শেষ।
যেমনঃ

package addition;

import java.util.Scanner;

 

public class Addition {

public static void main(String[] args) throws Exception{

System.out.println("Enter first number: ");
 Scanner in = new Scanner(System.in);
 int a = in.nextInt();
 System.out.println("Enter second number: ");
 int b = in.nextInt();

 System.out.println("Result is: " + (a+b));

}
}

জাভাতে কিভাবে কোন ডেটা ইনপুট নিতে হয় তার জন্য জাভাতে ডাটা ইনপুট লেখাটি দেখতে পারেন। 

আচ্ছা, যদি তিনটি সংখ্যা যোগ করতে বলে তখন কি করবেন? তিনটি ভ্যারিয়বল নিয়ে তা যোগ করে প্রিন্ট করবেন তাই তো?
আচ্ছা, যদি তিনশ বা তিনহাজার সংখ্যা নিয়ে কাজ করতে হয় তখন কি করবেন? এত গুলো ভ্যারিয়বল কিভাবে লিখবেন? লিখতে কত সময় লাগবে? আর প্রোগ্রামের সাইজ কত বড় হয়ে যাবে না? আরো অনেক গুলো প্রশ্ন জন্ম নিবে এমন সমস্যায়। যাই হোক, প্রোগ্রামিং আসছে মানুষের সমস্যা কমাতে,  বাড়াতে নয়। তাই এর জন্য অনেক সহজ একটা সমাধান আছে। যার নাম Array, অনেক মজার একটা জিনিস।

এখন আমাকে যদি আপনি জিজ্ঞেস করেন Array কি? তাহলে আমি বলব কন্টেইনার। বাক্স। যেটার মধ্যে অনেক কিছু রাখা যায়। বাক্সটা কেমন হবে তা আমরা বলে দিতে পারি। বাক্সটায় কয়েকটা খোপ/প্রকোষ্ঠ থাকবে তা আমরা বলে দিতে পারি এবং বলে দেওয়ার পর তার মধ্যে সুন্দর মত কিছু ডেটা/তথ্য রাখতে পারি।
যেমন আমরা ৩০০টি ভ্যারিয়বল নিয়ে কাজ করব, তখন ঐ কন্টেইনার বা বাক্সে ৩০০টি প্রকোষ্ঠ আমাদের জন্য তৈরি হবে। আর আমরা সুন্দর মত একটা একটা করে ভ্যারিয়বল রাখতে পারব বাক্সের মত দেখতে ঐ Array তে। নিছের ছবিটি দেখুনঃ

এটা একটা বাক্সের মত দেখায় না যার মধ্যে ৬টি প্রকোষ্ঠ রয়েছে?

Array কিছুটা এমন। আর এটা দেখতে একটা লাইনের মত তাই না? আর তাই এর নাম Linear Array বা One Dimensional Array.
Array এর ভিতরে যা থাকে তাকে Array Elements বলে। এরেতে সব ধরনের ডাটা রাখা যায়, এমন Integer, Character, Floating Point Number, String ইত্যাদি। Array তে আরেকটা জিনিস আছে, যার নাম হচ্ছে Index. যা দিয়ে আমরা কোন প্রকোষ্ঠে কিছু রাখতে পারব বা কি রাখছি তা বের করতে পারব। প্রতিটা প্রকোষ্ঠের একটা ইনডেক্স থাকে। Array এর প্রথম Element এর Index হচ্ছে ০, দ্বিতীয় Element এর Index বা উপাদানের হচ্ছে ১ , তৃতীয় উপাদানের হচ্ছে ২ ইত্যাদি। এভাবে বাড়তে থাকবে। উপাদানের নাম্বারের থেকে এক কমই হচ্ছে ইনডেক্স নাম্বার। যেমন ষষ্ঠ উপাদানের ইনডেক্স হচ্ছে ০৫।

ইনডেক্স কি তা এখনি পরিষ্কার হয়ে যাবে। মনে করি আমরা Number নামে একটা Array নিয়েছি যার সাইজ হচ্ছে ১০, সাইজ বলতে এরেতে কয়েটা উপাদান থাকবে তা বুঝানো হচ্ছে।
এরে হচ্ছে একটা ভ্যারিয়েবল, যাকিছু ধরে রাখতে পারে সাধারন গাণিতিক ভ্যারিয়েবলের মত। এখন আমরা যদি Number নামক Array তে কিছু রাখতে চাই, তাহলে বলে দিতে হবে কোন ঘরে/ইনডেক্সে রাখব।
যেমন

Number[0] = 77; লিখলে Number Array এর প্রথম ইন্ডেক্সে 77 রেখে দিবে।
Number[1] = 11; লিখলে Number Array এর দ্বিতীয় ইন্ডেক্সে 11 রেখে দিবে।

Number[2] = 54; লিখলে Number Array এর তৃতীয় ইন্ডেক্সে 54 রেখে দিবে।

এভাবে বাকি ইনডেক্সে অন্যান্য সংখ্যা আমরা রাখতে পারব। বিদ্রঃ Array তে বা প্রোগ্রামিং এ Indexing শুরু হয় ০ থেকে।

আচ্ছা আমরা এখন একটা প্রোগ্রাম চিন্তা করি যেটা ইউজার থেকে 10টা নাম্বার নিবে এবং পরে  আমাদের নাম্বার গুলোও দেখাবে। এটা সাধারন পদ্ধতিতে করতে গেলে আমাদের আগে ৬টা ভ্যারিয়েবল নিতে হত পরে তা আমাদের এওটা একটা করে দেখাতে হতো।

এখন আমরা কত সহজেই এ জিনিসটা করতে পারব মাত্র একটি ভ্যারিয়েবল নিয়েঃ


import java.util.Scanner;

public class Addition {

public static void main(String[] args) throws Exception{
 Scanner in = new Scanner(System.in);
 int[] Number; // int array declaration
 Number = new int[10]; // define the size of Number array
 for(int i=0; i<=10; i++){
 System.out.println("Enter "+ i +" no number:");
 Number[i] = in.nextInt();
 }
 for(int i =0; i<=10; i++){
 System.out.println("Number at " + i +" Index is:" +Number[i]);
 }
 }
}

প্রোগ্রামটা আসলে একটা বাজে প্রোগ্রাম। শুধু মাত্র বুঝানোর জন্য এমন ভাবে লেখা হয়েছে। এখানে আমরা একটা Integer Array নিলাম যার Size হচ্ছে 10, অর্থাৎ আমরা এর মধ্যে শুধু মাত্র 10টি ইলিমেন্ট রাখতে পারব।
Number[i] = in.nextInt(); এটা দিয়ে আমরা i এর বর্তমার মান যত তত তম ঘরে ইনপুট নেওয়া মানটি রাখব। প্রথমে i এর মান ধরে নিয়েছি 0, তা Number[0] অর্থাৎ প্রথম ঘরে রানটাইমে আমাদের ইনপুট দেওয়া সংখ্যাটি রাখবে। আমরা যেহেতু লুপ চালিয়েছি এবং প্রতিবার i এর মান এক করে বাড়িয়ে দিয়েছি তাই পরের বার i এর মান হবে 1 এবং Number[1] বা Number Array এর দ্বিতীয় ঘরে রানটাইমে দ্বিতীয়বার ইনপুট দেওয়া আমাদের সংখ্যাটি রাখবে। এভাবে লুপটি 10 বার ঘুরবে।

পরের বার আবার আমরা লুপ চালিয়ে কোন ইনডেক্সে কোন মানটা রেখেছি তা বের করেছি।

Array প্রোগ্রামিং এ অনেক বেশি ব্যবহৃত হয়।

Array কিন্তু Multi-Dimensional হতে পারে। উপরে আমরা যে উদাহরনটি দেখেছি তা ছিল One-Dimensional এর Dimension সংখ্যা দুই, তিন বা আরো বেশি হতে পারে। Two Dimensional array নিচের মত।

 এটি একটি Two Dimensional Character Array যার উপাদান সংখ্যা ১২। মনে করি Array টির নাম Character এবং এটিকে লিখতে হবে Character[3][4]  এখানে প্রথমটা হচ্ছে row সংখ্যা, দ্বিতীয়টি হচ্ছে Column সংখ্যা। অর্থাৎ এখানে ৩টি রো রয়েছে এবং ৪টি কলাম রয়েছে, সর্বোমোট উপাদাম সংখ্যা হচ্ছে ১২।
প্রথম উপাধান অর্থাৎ উপরের Character নামক Two Dimensional Array থেকেঃ

প্রথম উপাদানটি পেতে হলে আমাদের লিখতে হবে Character[0][0] এবং তা হচ্ছে A

দ্বিতীয় উপাদানটি পেতে হলে আমাদের লিখতে হবে Character[0][1] এবং তা হচ্ছে B

তৃতীয় উপাদানটি পেতে হলে আমাদের লিখতে হবে Character[0][2] এবং তা হচ্ছে C

চতুর্থ উপাদানটি পেতে হলে আমাদের লিখতে হবে Character[0][3] এবং তা হচ্ছে D

পঞ্চম উপাদানটি পেতে হলে আমাদের লিখতে হবে Character[1][0] এবং তা হচ্ছে E
ষষ্ঠ উপাদানটি পেতে হলে আমাদের লিখতে হবে Character[1][1] এবং তা হচ্ছে F
সপ্তম উপাদানটি পেতে হলে আমাদের লিখতে হবে Character[1][2] এবং তা হচ্ছে G
এভাবে আমরা পরের উপাদান গুলোও পেতে পারি।

কোন কিছু রাখতে হলে এ ভাবে একই ধাপ অনুসরন করতে হবে।
প্রথম ইনডেক্সে একটা Character রাখব, তার জন্য লিখতে হবে Character[0][0]
আগেই বলেছি Array Index শূন্য থেকে শুরু হয়।
দ্বিতীয় ইনডেক্সে একটা Character রাখার জন্য লিখতে হবে Character[0][1]
এভাবে বাকি গুলো রাখতে হবে।

আমরা একটা 4*4 array নিচ্ছি। যার মধ্যে আমরা ১৬টি নাম্বার রাখব।


package squre;

import java.util.Scanner;

public class Squre {

public static void main(String[] args) {
 Scanner in = new Scanner(System.in);

 int[][] Number;
 Number = new int[4][4];
 for(int i =0; i<4; i++){
 for(int j=0; j<4; j++){
 System.out.println("Enter the number for: ["+i +"] [" + j +"] Index:" );
 Number[i][j] = in.nextInt();

 }

 }
 for(int i =0; i<4; i++){
 for(int j=0; j<4; j++){
 System.out.println("Number at ["+i +"] [" + j +"] is :" +Number[i][j] );
 }

 }
 }
}

 বিদ্রঃ প্রগ্রামটি রান করার পর মোট ১৬টি ইনপুট নিবে, তাই ধৈর্য্য ধরে ইনপুট দিতে হবে 🙂

এ থেকে মুক্তি পেতে আপনি র‍্যান্ডোম নাম্বার অটোমেটিক্যালি তৈরি করে তারপর সে গুলো প্রিন্ট দিতে পারেন। তা নিজে নিজে চেষ্টা করুন।  হিন্টসঃ Random ran= new Random(); দিয়ে Random জাভা ক্লাসের ইন্সট্যান্স তৈরি করে নিন। তারপর   ran.nextInt(); দিয়ে Random নাম্বার তৈরি করে তা Array তে রাখুন। 

 হয়তো প্রথম প্রথম একটু বিদঘুটে লাগতে পারে, দুই একবার ভালো করে পর্যবেক্ষন করলে অনেক সহজ মনে হবে। আর চিন্তা করার সময় যদি বাস্তব জীবনের সাথে মিলিয়ে চিন্তা করা যায় তাহলে আরো দ্রুত বুঝা যাবে।

উপরে আমি শুধু int টাইপের array নিয়ে লিখছি। অন্যান্য Data Type এর জন্যও আপনি array ব্যবহার করতে পারেন। এখানে আমি শুধু কিভাবে ডিফাইন করবেন তা বলে দিচ্ছি।

byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;

এবং অবশ্যই আপনি একই ভাবে মাল্টিডাইমেনশন এরে ব্যবহার করতে পারবেন। এমনি জাভাতে কোন অবজেক্ট তৈরি করে সে অবজেক্ট এর জন্যও এরে তৈরি করতে পারবেন। কিভাবে তৈরি করতে হয় তা নিজে নিজে বের করুন বা গুগলের সাহায্য নিন। 🙂

শুভ প্রোগ্রামিং।

Leave a Reply