Не могу понять почему в 20 и 21 строках нужно дописать к "size" "-1"? Зачем мы отнимаем единицу от полного количества элементов?

    /* Удали последнюю строку и вставь её в начало
1. Создай список строк.
2. Добавь в него 5 строчек с клавиатуры.
3. Удали последнюю строку и вставь её в начало. Повторить 13 раз.
4. Используя цикл выведи содержимое на экран, каждое значение с новой строки.
*/
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //напишите тут ваш код
        ArrayList<String> list = new ArrayList<String>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 0; i < 5; i++)
        {
            list.add(reader.readLine());
        }
        for (int i=0; i<13; i++){
            int size = list.size();
            String temp = list.get(size-1);
            list.remove(size-1);
            list.add(0, temp);
        }

        for (int i=0;i<list.size();i++) System.out.println(list.get(i));
    }
}

задан 22 Ноя '15, 18:54

%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%BA's gravatar image

ученик
4916
одобрено: 0%

изменено 22 Ноя '15, 18:58


Потому что нумерация идёт с нуля. Если у нас список на 5 элементов (размер = 5), то последний будет под номером 5 минус 1 (номер = 4), потому что номера элементов такие: 0, 1, 2, 3, 4.

Кстати, эту задачу можно решить без лишней переменной temp. Просто дублируем последний элемент в начало, а потом удаляем его.

ссылка

опубликован 22 Ноя '15, 18:58

LuneFox's gravatar image

LuneFox
48119
одобрено: 27%

изменено 22 Ноя '15, 19:01

Нет, так не получится. Все программисты считают с нуля, в отличие от обычных людей.

Чтобы создать массив на 5 элементов, и нужно писать int[5]. Их будет 5: нулевой, первый, второй, третий, четвёртый. Обращаться к ним нужно по их порядковому номеру.

Да даже в жизни есть нули: когда ребёнок рождается, ему же не сразу один год. Ему сначала 0 лет.

(22 Ноя '15, 19:02) LuneFox

Почему я должен указывать конкретно индекс 4 последним? Я что не могу работать с 1 по >= 5? А Java бы уже сама понимала, что это с 0 по >= 4? Ведь я же могу писать int[] i = new int [5], а не new int[4] что бы создать массив на 5 элементов.

(22 Ноя '15, 19:01) ученик
Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×105
×27

Задан: 22 Ноя '15, 18:54

Просмотров: 542 раз

Отредактирован: 22 Ноя '15, 19:13