При использовании BufferedReader
вы должны позаботиться об исключениях, которые он может бросить. Кроме того, метод Integer.parseInt(String s)
может вызывать NumberFormatException
, если String
, который вы предоставляете, не может быть преобразован в Integer
.
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while ((thisLine = br.readLine()) != null) {
System.out.println(thisLine);
Integer parsed = Integer.parseInt(thisLine);
System.out.println("Parsed integer = " + parsed);
}
} catch (IOException e) {
System.err.println("Error: " + e);
} catch (NumberFormatException e) {
System.err.println("Invalid number");
}
Линия a(b) = a
выполняет операцию векторизованной индексации для элементов b
и a
(требуя, чтобы они имели одинаковое количество элементов, что они делают). Для лучшего понимания того, что он делает, вот эквивалентная не векторизованная операция, выполненная с циклом for:
c = a; % Store original to work from
for index = 1:numel(b)
a(b(index)) = c(index);
end
Итак, элементу a(b(1))
(или a(2)
, второй элемент) назначается значению из a(1)
, элементу a(b(2))
(или a(4)
, четвертому элементу) присваивается значение из a(2)
и т. д. Это эквивалентно сортировке элементов индексного вектора b
с последующим применением того же самого перестановка перестановок в a
. Для данного вектора b
это помещает элементы из первой половины a
в четные позиции индекса и элементы из второй половины a
в нечетные позиции индекса.