пытаюсь работать с массивами на java, но не знаю, что я делаю не так

#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 кнопку «Учетная запись»