বিবেচনা:
int[][] multD = new int[5][];
multD[0] = new int[10];
আপনি কী 5 টি সারি এবং 10 কলাম সহ দ্বিমাত্রিক অ্যারেটি তৈরি করেন?
আমি এই কোডটি অনলাইনে দেখেছি, তবে সিনট্যাক্সটির কোনও অর্থ নেই।
বিবেচনা:
int[][] multD = new int[5][];
multD[0] = new int[10];
আপনি কী 5 টি সারি এবং 10 কলাম সহ দ্বিমাত্রিক অ্যারেটি তৈরি করেন?
আমি এই কোডটি অনলাইনে দেখেছি, তবে সিনট্যাক্সটির কোনও অর্থ নেই।
উত্তর:
নিম্নলিখিত চেষ্টা করুন:
int[][] multi = new int[5][10];
... যা এই জাতীয় কিছু জন্য একটি সংক্ষিপ্ত হাত:
int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];
লক্ষ্য করুন যে উপাদানের জন্য ডিফল্ট মানে সক্রিয়া করা হবে int
, 0
, তাই উপরে এছাড়াও সমতূল্য আছেন:
int[][] multi = new int[][]{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
new int[][]
এ =new int[][]{...}
বৈকল্পিক? আমরা কি শুধু লিখতে পারি ={...}
?
new
কীওয়ার্ড ব্যবহার করে অবজেক্টগুলিতে বরাদ্দ করা হয় ।
int array[][] = new int[3][];
ভিএস সম্পর্কে int array[][] = new int[][3];
?? উভয় সংস্করণটি কোথাও পড়েছি বলে কোনটি বৈধ।
আমরা একটি দ্বি মাত্রিক অ্যারে ঘোষণা করতে পারি এবং এর ঘোষণার সময় উপাদানগুলি সরাসরি সংরক্ষণ করতে পারি:
int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};
এখানে int অ্যারেতে সংরক্ষিত পূর্ণসংখ্যার ধরণের উপাদানগুলির প্রতিনিধিত্ব করে এবং অ্যারের নামটি 'চিহ্ন'। ইনট হ'ল "{" এবং "}" ধনুর্বন্ধনীগুলির অভ্যন্তরে উপস্থাপিত সমস্ত উপাদানগুলির জন্য ডেটাটাইপ কারণ একটি অ্যারে একই ডাটা টাইপের উপাদানগুলির সংগ্রহ।
উপরে লেখা আমাদের বিবৃতিতে ফিরে আসছি: প্রতিটি সারির উপাদানগুলি কোঁকড়ানো ধনুর্বন্ধনী ব্রেসগুলির মধ্যে লিখতে হবে। প্রতিটি সারিতে থাকা সারি এবং উপাদানগুলি একটি কমা দ্বারা পৃথক করা উচিত।
এখন বিবৃতিটি পর্যবেক্ষণ করুন: আপনি এখানে 3 টি সারি এবং 5 টি কলাম পেতে পারেন, তাই জেভিএম 3 * 5 = 15 টি মেমরির ব্লক তৈরি করে। এই ব্লকগুলি পৃথকভাবে তা হিসাবে উল্লেখ করা যেতে পারে:
marks[0][0] marks[0][1] marks[0][2] marks[0][3] marks[0][4]
marks[1][0] marks[1][1] marks[1][2] marks[1][3] marks[1][4]
marks[2][0] marks[2][1] marks[2][2] marks[2][3] marks[2][4]
দ্রষ্টব্য:
আপনি যদি এন উপাদান সংরক্ষণ করতে চান তবে অ্যারে সূচকটি শূন্য থেকে শুরু হয়ে এন -1 এ শেষ হবে । দ্বিমাত্রিক অ্যারে তৈরির আরেকটি উপায় হ'ল প্রথমে অ্যারে ঘোষণা করা এবং তারপরে নতুন অপারেটর ব্যবহার করে এর জন্য মেমরি বরাদ্দ করা।
int marks[][]; // declare marks array
marks = new int[3][5]; // allocate memory for storing 15 elements
উপরের দুটি সংযুক্ত করে আমরা লিখতে পারি:
int marks[][] = new int[3][5];
অন্যরা উল্লিখিতভাবে আপনি সেগুলি তৈরি করতে পারেন। আরও একটি বিষয় যুক্ত করতে: আপনি এমনকি প্রতিটি সারি দিয়ে একটি স্কিউ দ্বি-মাত্রিক অ্যারে তৈরি করতে পারেন, অগত্যা একই সংখ্যক সংঘর্ষের সংস্থান নেই, এর মতো:
int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];
int array[][] = new int[3][];
ভিএস সম্পর্কে কি int array[][] = new int[][3];
?? উভয় সংস্করণটি কোথাও পড়েছি বলে কোনটি বৈধ।
5 সারি এবং 10 কলাম সহ দ্বিমাত্রিক অ্যারে তৈরির সবচেয়ে সাধারণ প্রতিমাটি হ'ল:
int[][] multD = new int[5][10];
বিকল্পভাবে, আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন যা আপনার কাছে যা আছে তার থেকে অনেক বেশি অনুরূপ, যদিও আপনাকে প্রতিটি সারি স্পষ্টতই শুরু করতে হবে:
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
Object[][] ary2d = new Object[5][10];
তবে আপনাকে এখনও 2 ডি অ্যারের প্রতিটি উপাদানকে আরম্ভ করতে হবে।
null
যদি কোনও অ আদিম ব্যক্তিদের জন্য কেসটি নিরাপদে পরিচালনা না করেন । আপনার প্রতিটি উপাদান সূচনা করা উচিত কিনা তা সম্পূর্ণ আপনার নকশার উপর নির্ভর করে। এছাড়াও, কেবল স্পষ্ট করার জন্য - আদিমগুলি বাতিল হতে পারে না এবং আপনার দ্বারা নির্ধারিত না হলে সংজ্ঞায়িত ডিফল্ট মানটিতে ইনস্ট্যান্টিয়েট করা যায় get উদাহরণস্বরূপ int
শূন্য হতে পারে না এবং আপনি int i;
কোনও মান নির্ধারণ না করে বললে , এর মধ্যে একটি ডিফল্ট 0
ব্যবহার করা হয়। এটি সম্পর্কে এখানে পড়ুন
চেষ্টা করুন:
int[][] multD = new int[5][10];
মনে রাখবেন যে আপনার কোডে কেবল 2D অ্যারের প্রথম লাইনটি 0 এ সূচনা করা হয় 2 লাইন 2 থেকে 5 পর্যন্ত উপস্থিত নেই। আপনি যদি এগুলি মুদ্রণের চেষ্টা করেন তবে আপনি তাদের null
সবার জন্য পাবেন ।
int [][] twoDim = new int [5][5];
int a = (twoDim.length);//5
int b = (twoDim[0].length);//5
for(int i = 0; i < a; i++){ // 1 2 3 4 5
for(int j = 0; j <b; j++) { // 1 2 3 4 5
int x = (i+1)*(j+1);
twoDim[i][j] = x;
if (x<10) {
System.out.print(" " + x + " ");
} else {
System.out.print(x + " ");
}
}//end of for J
System.out.println();
}//end of for i
জাভাতে, দ্বিমাত্রিক অ্যারেটিকে এক-মাত্রিক অ্যারে হিসাবে একই হিসাবে ঘোষণা করা যেতে পারে। এক মাত্রিক অ্যারেতে আপনি লিখতে পারেন
int array[] = new int[5];
যেখানে int হ'ল ডেটা টাইপ হয়, অ্যারে [] একটি অ্যারে ডিক্লেয়ারেশন এবং new array
পাঁচটি সূচী সহ এটির বস্তুগুলির সাথে একটি অ্যারে হয়।
এর মতো, আপনি নিম্নলিখিত হিসাবে একটি দ্বিমাত্রিক অ্যারে লিখতে পারেন।
int array[][];
array = new int[3][4];
এখানে array
একটি int তথ্য টাইপ। আমি প্রথমে এই ধরণের এক-মাত্রিক অ্যারেতে ঘোষণা করেছি, তারপরে একটি 3 সারি এবং 4 টি কলাম অ্যারে তৈরি করা হবে।
আপনার কোডে
int[][] multD = new int[5][];
multD[0] = new int[10];
এর অর্থ হ'ল আপনি পাঁচটি সারি সহ একটি দ্বিমাত্রিক অ্যারে তৈরি করেছেন। প্রথম সারিতে 10 টি কলাম রয়েছে। জাভাতে আপনি প্রতিটি ইচ্ছেমতো কলামের আকার পছন্দ হিসাবে বেছে নিতে পারেন।
int rows = 5;
int cols = 10;
int[] multD = new int[rows * cols];
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < cols; c++)
{
int index = r * cols + c;
multD[index] = index * 2;
}
}
উপভোগ করুন!
এইভাবে চেষ্টা করুন:
int a[][] = {{1,2}, {3,4}};
int b[] = {1, 2, 3, 4};
এই ধরণের অ্যারেগুলি জাভাতে জেগড অ্যারে হিসাবে পরিচিত:
int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[5];
এই দৃশ্যে অ্যারের প্রতিটি সারিতে কলামের বিভিন্ন সংখ্যা রয়েছে। উপরের উদাহরণে প্রথম সারিতে তিনটি কলাম, দ্বিতীয় সারিতে দুটি কলাম এবং তৃতীয় সারিতে পাঁচটি কলাম থাকবে hold আপনি নীচের মত সংকলন সময়ে এই অ্যারে শুরু করতে পারেন:
int[][] multD = {{2, 4, 1}, {6, 8}, {7, 3, 6, 5, 1}};
আপনি সহজেই আপনার অ্যারেতে সমস্ত উপাদান পুনরাবৃত্তি করতে পারেন:
for (int i = 0; i<multD.length; i++) {
for (int j = 0; j<multD[i].length; j++) {
System.out.print(multD[i][j] + "\t");
}
System.out.println();
}
আসলে জাভার গাণিতিক দিক থেকে বহুমাত্রিক অ্যারে নেই। জাভা যা আছে তা হ'ল অ্যারের অ্যারে, এমন একটি অ্যারে যেখানে প্রতিটি উপাদানও অ্যারে হয়। এ কারণেই এটি শুরু করার পরম প্রয়োজনীয়তা হ'ল প্রথম মাত্রার আকার। যদি বাকিগুলি নির্দিষ্ট করা থাকে তবে এটি ডিফল্ট মান সহ একটি অ্যারে তৈরি করবে।
int[][] ar = new int[2][];
int[][][] ar = new int[2][][];
int[][] ar = new int[2][2]; // 2x2 array with zeros
এটি আমাদের একটি বিচক্ষণতা দেয়। সাব-অ্যারের আকার আরও উপাদান যুক্ত করে পরিবর্তন করা যায় না, তবে আমরা স্বেচ্ছাচারিতার আকারের একটি নতুন অ্যারে নির্ধারণ করে এটি করতে পারি।
int[][] ar = new int[2][2];
ar[1][3] = 10; // index out of bound
ar[1] = new int[] {1,2,3,4,5,6}; // works