Необходимо заполнить строковую матрицу данными пользователя. Двумерный массив - обязательное условие. При использовании одного объекта сканера пропускается элемент arr[0][0]. Остальные элементы заполняются корректно. Код:
import java.util.Scanner;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) {
getTwoDimensionalArray();
}
public static String[][] getTwoDimensionalArray() {
System.out.println("Введите количество строк и столбцов таблицы через пробел");
Scanner sc = new Scanner(System.in);
String[][] arr = new String[sc.nextInt()][sc.nextInt()];
for (int i = 0; i < arr.length; i++){
for (int j = 0; j < arr[i].length; j++) {
if (j % 2 == 0) {
System.out.println("Введите ФИО");
arr[i][j] = sc.nextLine();
} else if (j % 2 != 0) {
System.out.println("Введите баланс");
arr[i][j] = sc.nextLine();
}
}
System.out.println(Arrays.toString(arr[i]));
}
sc.close();
return arr;
}
}
Вывод:
Введите количество строк и столбцов таблицы через пробел
3 2
Введите ФИО
Введите баланс
fgh
[, fgh]
Введите ФИО
cvb
Введите баланс
cvb
[cvb, cvb]
Введите ФИО
cvb
Введите баланс
cvb
[cvb, cvb]
12
Но если добавить еще один объект сканера, то все работает как надо:
public static String[][] getTwoDimensionalArray() {
System.out.println("Введите количество строк и столбцов таблицы через пробел");
Scanner sc = new Scanner(System.in);
String[][] arr = new String[sc.nextInt()][sc.nextInt()];
Scanner line = new Scanner(System.in);
for (int i = 0; i < arr.length; i++){
for (int j = 0; j < arr[i].length; j++) {
if (j % 2 == 0) {
System.out.println("Введите ФИО");
arr[i][j] = line.nextLine();
} else if (j % 2 != 0) {
System.out.println("Введите баланс");
arr[i][j] = line.nextLine();
}
}
// System.out.println(Arrays.toString(arr[i]));
}
line.close();
sc.close();
System.out.println(Arrays.toString(arr[0]));
System.out.println(Arrays.toString(arr[1]));
System.out.println(Arrays.toString(arr[2]));
return arr;
}
Scannerне считывает строку послеnextInt(); Особенности использованияscanner.nextLine(); Странная работаscanner.nextInt()– Nowhere Man Sep 02 '23 at 06:50