Матричный индекс чередования

При использовании 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");
 }
1
задан Chazaster 6 March 2019 в 18:07
поделиться

1 ответ

Линия 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 в нечетные позиции индекса.

0
ответ дан gnovice 6 March 2019 в 18:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: