WedX - журнал о программировании и компьютерных науках

как напечатать 2d-массив в java

Мне нужно распечатать массив 2d, в котором я буду задавать значения для строки и столбца во время выполнения.

package test;

import java.util.Scanner;

public class test1 {
    
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int rowsize=scan.nextInt();
        int i=0;int j=0;
        int rowarr[]=new int[rowsize];
        int colsize=scan.nextInt();
        int colarr[]=new int[colsize];
        int d[][]=new int[rowsize][colsize];
        for( i=0;i<rowarr.length;i++) {
            rowarr[i]=scan.nextInt();
        }
        
        for( j=0;j<colsize;j++) {
            colarr[j]=scan.nextInt();
        }
        
        for(int k=0;k<rowarr.length;k++) {
            for(int m=0;m<colarr.length;m++) {
                System.out.print(d[rowarr[k]][colarr[m]]);
            }
            System.out.println();
        }
    }
}

Я получаю сообщение об ошибке в последней строке при печати d[rowarr[k]][colarr[m]]. Может ли кто-нибудь дать предложения?

31.07.2020

  • в чем ошибка? можете ли вы предоставить его? 31.07.2020
  • также укажите, каково ограничение элементов rowarr[] и colarr[]. 31.07.2020
  • Что вы делаете с этим кодом...!!!... Сначала вы объявляете два одномерных массива, а затем объявляете пустой двумерный массив! еще более нелепо вы используете rowarr[k] и colarr[m] в качестве индекса для массива 2d. что, если они больше, чем размер массива??!! 31.07.2020

Ответы:


1

Поскольку вы не предоставляете никаких подробностей об ошибках и ограничениях, я отвечаю на предположения:

Массив d[][] доступен для индексов d[0...rowsize-1][0...colsize-1].

Но если вы попытаетесь получить доступ к любому другому индексу, который имеет отрицательное значение или больше размера строки-1, например d[rowsize+5][0], это приведет к ошибке.

И точно так же, если вы попытаетесь получить доступ к d[0][colsize+2] или что-то в этом роде, или d[0][-3], это также выдаст ошибку.

Итак, если вы хотите получить доступ к d[x][y] (где x и y — целые числа), тогда x и y должны следовать следующим правилам:

  1. 0 ‹= x ‹ размер строки
  2. 0 ‹= y ‹ colsize

проверьте, правильно ли вы обращаетесь к d[][]...

31.07.2020

2

Скажите, если я ошибаюсь, но я думаю, что ваш массив d остается пустым. Он инициализируется, а затем ничего.

31.07.2020
  • Это не ответ, пожалуйста, продолжайте такие разговоры/разъяснения в комментариях. 31.07.2020
  • Для меня это часть ответа, как вы сами сказали в своем собственном ответе, он не заполняет массив d. @GiorgiTsiklauri 31.07.2020
  • У вас есть правильное понимание проблемы, но ответ не может быть самим вопросом. Вы спрашиваете, ошибаетесь вы или нет. Если вы хотите задать вопрос, лучше зайдите в комментарии и проясните любые сомнения, которые у вас могут возникнуть. 31.07.2020
  • Извините, это была просто фигура речи :) 31.07.2020

  • 3

    У вас ArrayIndexOutOfBoundsException, потому что:

    System.out.println(d[rowarr[k]][colarr[m]])
    

    пытается получить доступ к элементу массива d[][] с определенными значениями rowarr[k] и colarr[m], которые выходят за пределы диапазона данного массива.

    Например, если вы заполняете rowarr[0] массивом 1, colarr[0] - массивом 6, но у вас сгенерированы массивы rowarr[] и colarr[] размерами 2 и 3 соответственно, то d[1][6] (на вашей первой итерации - d[rowarr[k]][colarr[m]]) выйдет за границы, т.к. в массиве d[1] нет 6-го элемента th.

    31.07.2020
  • использование rowarr[k] и colarr[m] в качестве индекса для 2d может привести к ошибкам! это бессмысленно.! 31.07.2020
  • @Omid.N простите меня? ты хочешь сказать, что мой ответ бессмыслен? Я думаю, это именно то, что я объясняю здесь.. нет? :) 31.07.2020
  • Нет нет! нисколько! проблема с кодом в вопросе. :) 31.07.2020
  • Массив d[][] не пуст (как при наличии значений строки null). Он полностью заполнен нулями в результате инициализатора new int[rowsize][colsize]. Это не объясняет, почему код OP выдает исключение. 31.07.2020
  • @TedHopp хорошая мысль. Я исправил свою механическую ошибку и дал правильный ответ. 31.07.2020
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]