Используете метод split () в двумерном массиве?

Я хочу ввести данные в виде одной строки с пробелами, а затем ввести эти данные в двумерный массив.

String[][] examples = new String[100][100];
for (int i = 0; i < 2; i++) {
    System.out.println("enter line " + i);
    String line = sc.next();
    String[] linearr = line.split("\\s+");
    for (int j = 0; j < 5; j++) {
        examples[i][j] = linearr[j];
        System.out.println(linearr[j]);
    }
}

Только linearr[0] получает значение, введенное ...linearr[1] , linearr[2], поэтому не получать значения, а скорее говорит индекс за пределами.

Попробуйте String line=sc.nextLine();.

Arnaud 09.03.2018 16:16

Безусловно, лучший способ узнать, что не так с этим кодом, - это использовать мощный отладчик, встроенный в вашу IDE, для пошагового выполнения оператора кода за оператором, проверки содержимого переменных и т. д. Использование отладчика - это нет продвинутый навык. Это одна из первых вещей, которую должен выучить новичок вскоре после своей первой программы "hello world".

T.J. Crowder 09.03.2018 16:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
754
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы хотели получить строку, но ваш текущий код получает только слово на ввод.

Вместо того, чтобы использовать:

String line=sc.next();        //receive a word

Измените его на:

String line=sc.nextLine();    //receive a line

so on dont get values rather says index out of bounds.....

Вместо использования 5 количество строковых токенов из разделения можно использовать в качестве управления циклом для вашего внутреннего цикла, поэтому вы можете захотеть:

for(int j=0; j < linearr.length; j++)

Это предотвратит появление IndexOutOfBoundsException, когда на входе меньше 5 слов.

Вместо sc.next():

 String line=sc.next();

Вам следует использовать:

String line=sc.nextLine();

Because next() can read input only till space and should be used for only single word.And if you are about to read a line you should use nextLine()

Узнать больше прочитайте это

Ответ принят как подходящий

sc.next() возвращает только первое слово.

sc.nextLine() возвращает всю строку.

И вместо

for(int j=0;j<5;j++)
{
    examples[i][j]=linearr[j];
    System.out.println(linearr[j]);
}

ты можешь просто сделать

examples[i] = linearr;

В этом случае вы можете инициализировать new String[100][].

shmosel 09.03.2018 16:25

Другие вопросы по теме