Как Java Scanner работает в этой ситуации?
Есть задача.
Ввести несколько элементов для массива.
Ввести сколько сделать перестановок (swap).
Ввести какие индексы в массиве переставить.
Напечатать результат.
Пример
Input:
1 2 3 4 5 6
2
0 1
3 5
Output: 2 1 3 6 5 4
Проблема – считать 2 индекса для swap, т.к. scanner.nextInt() считывает только первую цифру. Тогда считываю как String, разбиваю на массив, передаю в метод swap элементы массива как аргументы.
Код выбрасывает при вводе индексов
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
ArrayList<String> list = new ArrayList<>(Arrays.asList(input.split(" ")));
int swapNum = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < swapNum; i++) {
String[] swap = scanner.nextLine().split(" ");
int first = Integer.parseInt(swap[0]);
int second = Integer.parseInt(swap[1]);
Collections.swap(list, first, second);
}
for (String item : list) {
System.out.print(item + " ");
}
}
}
Я посмотрел в решение. Ответ:
for (int i = 0; i < swapNum; i++) {
Collections.swap(list, scanner.nextInt(), scanner.nextInt());
}
1 - Почему код выбрасывает Exception ? Как scanner считывает информацию ?
2 - Почему в решении scanner.nextInt() считывает обе цифры через пробел, а не только первую цифру ?
====
По 1 вопросу