Поміркуйте:
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][];
VS int array[][] = new int[][3];
?? яка з них легальна, оскільки я десь прочитав обидві версії.
Ми можемо оголосити двовимірний масив і безпосередньо зберігати елементи на момент його декларування як:
int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};
Тут int представляє елементи цілого числа, що зберігаються в масиві, а ім'я масиву - "знаки". int - тип даних для всіх елементів, представлених всередині брекетів "{" та "}, тому що масив - це сукупність елементів, що мають однаковий тип даних.
Повертаючись до нашого написаного вище твердження: кожен ряд елементів повинен бути записаний всередині фігурних дужок. Рядки та елементи в кожному ряду повинні бути розділені комами.
Тепер спостерігайте за твердженням: ви можете отримати там 3 рядки і 5 стовпців, тому JVM створює 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]
ПРИМІТКА.
Якщо ви хочете зберегти n елементів, то індекс масиву починається з нуля і закінчується на n-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][];
VS 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];
і раніше, ви все одно повинні ініціалізувати кожен елемент 2D масиву.
null
справою безпечно для будь-яких не примітивів. Від того, чи слід ініціалізувати кожен елемент, чи ні, повністю залежить від вашого дизайну. Крім того, просто для уточнення - примітиви не можуть бути нульовими і отримати екземпляр до визначеного значення за замовчуванням, якщо воно не присвоєне вами. Наприклад, не int
може бути нульовим, і коли ви говорите, int i;
не присвоюючи значення, використовується один із стандартних параметрів 0
. Про це читайте тут
Спробуйте:
int[][] multD = new int[5][10];
Зауважте, що у вашому коді лише перший рядок 2D масиву ініціалізований до 0. Рядок 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
У Java двовимірний масив можна оголосити таким же, як і одновимірний масив. В одновимірний масив можна писати як
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 стовпців. На Java ви можете вибрати розмір стовпця для кожного рядка за вашим бажанням.
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};
Ці типи масивів на Java відомі як нерівні масиви:
int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[5];
У цьому сценарії кожен рядок масиву містить різну кількість стовпців. У наведеному вище прикладі перший рядок буде містити три стовпці, другий ряд буде містити два стовпці, а третій ряд містить п'ять стовпців. Ви можете ініціалізувати цей масив у час компіляції, як нижче:
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();
}
Насправді Java не має багатовимірного масиву в математичному сенсі. Java має лише масив масивів, масив, де кожен елемент також є масивом. Ось чому абсолютна вимога його ініціалізації - це розмір першого виміру. Якщо решта вказана, то вона створить масив, заповнений значенням за замовчуванням.
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