#java #multidimensional-array
Вопрос:
Я пытаюсь добиться следующей структуры,
100 200 300 400 500 600 700 800
200 400 600 800 1,000 1,200 1,400 1,600
Я попытался использовать следующий код, но не могу заставить его работать.
public class Main {
public static void main(String[] args) {
int cols = 5;
int rows = 4;
int number = 100;
int [][] doublearr = new int [rows][cols];
for (int i = 0; i < doublearr.length ;i ){
for(int j=0; j < doublearr[i].length; j ){
doublearr[0][0] = number;
doublearr[i][j] = doublearr[0][0] *( j 1);
System.out.print("t" doublearr[i][j]);
}
System.out.println();
}
}
}
Это результат, который я получаю за это.
100 200 300 400 500
100 200 300 400 500
100 200 300 400 500
100 200 300 400 500
Я действительно ценю, если кто-нибудь может указать мне правильное направление. заранее спасибо.
Комментарии:
1. 1) Вы действительно хотите устанавливать
doublearr[0][0] = number
в каждом запуске цикла? По-видимому, это одноразовая инициализация, которую следует выполнить один раз перед запуском цикла.2. 2) Вы должны отделить заполнение массива и печать массива (что означает наличие двух разных циклов).
3. я попробовал первый шаг, и результат тот же, сделаю второй шаг, как вы упомянули, и посмотрю, сработает ли это.
4. Пожалуйста, обновите код в своем вопросе с учетом вашей последней попытки и результатов, которые она дает.
5. я попробовал оба шага, предложенные-Seelenvirtuose, но, похоже, это ничего не меняет.
Ответ №1:
Если вы хотите напечатать двойную часть вышеприведенного столбца, вам нужно будет внести небольшое изменение:
for (int i = 0; i < doublearr.length ;i ){
for(int j=0; j < doublearr[i].length; j ){
doublearr[0][0] = number;
doublearr[i][j] = doublearr[0][0] *( j 1);
System.out.print("t" doublearr[i][j]);
}
number*=2; // add this line
System.out.println();
}
Комментарии:
1. этот код работает, за исключением одной вещи , в выводе для второй строки после 300 должно быть 400, 500 и так далее, но вместо этого он добавляет 300. 100 200 300 400 500 200 400 600 800 1000 300 600 900 1200 1500 400 800 1200 1600 2000,
2. @isfan я пробовал с кольцами 5 и строками 4, все работает, как и ожидалось, напечатан двойной столбец выше
3. спасибо Равик, я хочу добиться того, чтобы во второй строке с индексом 0 он был вдвое больше индекса первой строки 0, допустим, 100 находится в индексе 0 в столбце 1 первых строк, поэтому во второй строке он должен увеличиваться примерно на 200 300 400 вместо 200 400 600. еще раз благодарю вас за помощь.
4. @isfan пожалуйста, добавьте минимум 4 строки вывода образца к вашему вопросу, чтобы я мог лучше понять и дать правильные варианты
5. Все хорошо, равид, спасибо за ответ.
Ответ №2:
Вы хотите изменить свой столбец 8
и строку, 2
потому что ваше выходное значение равно 8 * 2 = 16
. Ваше уравнение таково doublearr[0][0] * (j 1)
Если ваше уравнение является doublearr[0][0] * (j 1)
:
1. 100 * (0 1) = 100
2. 100 * (1 1) = 200
3. 100 * (2 1) = 300
4. 100 * (3 1) = 400
5. 100 * (4 1) = 500
6. 100 * (5 1) = 600
7. 100 * (6 1) = 700
8. 100 * (7 1) = 800
9. 100 * (0 1) = 100
10. 100 * (1 1) = 200
11. 100 * (2 1) = 300
12. 100 * (3 1) = 400
13. 100 * (4 1) = 500
14. 100 * (5 1) = 600
15. 100 * (6 1) = 700
16. 100 * (7 1) = 800
Если уравнение изменится на doublearr[0][0] * (j 1) * (i 1)
:
1. 100 * (0 1) * (0 1)= 100
2. 100 * (1 1) * (0 1)= 200
3. 100 * (2 1) * (0 1)= 300
4. 100 * (3 1) * (0 1)= 400
5. 100 * (4 1) * (0 1)= 500
6. 100 * (5 1) * (0 1)= 600
7. 100 * (6 1) * (0 1)= 700
8. 100 * (7 1) * (0 1)= 800
9. 100 * (0 1) * (1 1)= 200
10. 100 * (1 1) * (1 1)= 400
11. 100 * (2 1) * (1 1)= 600
12. 100 * (3 1) * (1 1)= 800
13. 100 * (4 1) * (1 1)= 1000
14. 100 * (5 1) * (1 1)= 1200
15. 100 * (6 1) * (1 1)= 1400
16. 100 * (7 1) * (1 1)= 1600
Вот здесь внизу мой код:
public class MyClass {
public static void main(String[] args) {
int cols = 8;
int rows = 2;
int number = 100;
int [][] doublearr = new int [rows][cols];
for (int i = 0; i < doublearr.length ;i ){
for(int j=0; j < doublearr[i].length; j ){
doublearr[0][0] = number;
doublearr[i][j] = doublearr[0][0] * (j 1) * (i 1);
System.out.print(" " doublearr[i][j]);
}
System.out.println();
}
}
}
Комментарии:
1. миллион благодарностей, я действительно ценю вашу помощь.
2. @isfan Не забудьте принять ответ, если вы считаете его правильным
3. не уверен, как принять ответ, есть ли на странице какая-либо опция для принятия ответов.
4. Да, вы можете увидеть символ в правом верхнем углу
right answer
, просто нажмите на него. за подсчетом голосов5. нажмите на мой аккаунт
right button
. вы нажимаете наRavik
кнопку «Учетная запись»