Решение задачи JavaRush task.task14.task1418


Автор: в

Поскольку я довольно давно начал заниматься изучением Java с помощью сервиса JavaRush, решил, что будет уместным публиковать здесь так же разборы и решения некоторых задач, которые дают на этом ресурсе по мере прохождения основного курса. Сегодня я попробую рассмотреть и разобрать задачу javarush.task.task14.task1418.


Итак, package com.javarush.task.task14.task1418: что делаем?

Не буду здесь описывать лишний раз условия задачи com.javarush.task.task14.task1418. Перейдем сразу непосредственно к разбору. Для удобства восприятия я отметил зеленым области, которые были добавлены в код или изменены на верный вариант. Серым я отметил комментарии. Красным я отметил области, которые изначально были с ошибками. Желтые - это условные закомментированные номера методов.

Что делаем по пунктам:

  1. Создаем три public static void метода initList(List list), printListValues(List list), processCastedObjects(List list)
  2. Перемещаем все строки list.add (//3), которые добавляют в список новые элементы, в тело метода initList
  3. Перемещаем цикл for (//4), отвечающий за выведение на экран элементов списка list, в тело метода printListValues
  4. Перемещаем цикл for (//5), отвечающий за проверку элементов list, в тело метода processCastedObjects
  5. Исправляем в цикле метода printListValues (//4) знак "меньше или равно" <= на "меньше" <, поскольку номер индекса последнего элемента в списке всегда на единицу меньше, чем общее количество элементов списка из-за того, что нумерация элементов начинается с нуля. Вместо i--, конечно, ставим i++
  6. В методе processCastedObjects (//5) меняем типы Float на Double и наоборот, где надо, чтобы правильно срабатывали условные операторы if
  7. В методе main после строки создания list добавляем строки вызова всех созданных методов по очереди (//3, //4, //5)

Пишем решение задачи javarush.task.task14.task1418

Получаем следующий код, который работает и проходит валидацию в Intellij IDEA:

package com.javarush.task.task14.task1418;

import java.util.LinkedList;
import java.util.List;

/* 
Исправь четыре ошибки
*/

public class Solution {
    public static void main(String[] args) {
        List list = new LinkedList();
        initList (list); /* Вызываем методы, в которые "завернули" код */
        printListValues (list);
        processCastedObjects (list);
    }
    //3
    public static void initList(List list) {
        list.add(new Double(1000f));
        list.add(new Double("123e-445632"));
        list.add(new Float(-90 / -3));
        list.remove(new Double("123e-445632")); /* Эта штука меня смутила, но я оставил её в покое. Напишите, пожалуйста в коментах, что она делает, я так и не понял. */
    }
    //4 - Исправь 2 ошибки
    public static void printListValues(List list) {
        /* Исправление ошибки! Так было: for (int i = 0; i <= list.size(); i--) */
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
    //5
    public static void processCastedObjects(List list) {
         for (Number object : list) {
             //Исправь 2 ошибки
             if (object instanceof Float) {
                 Float a = (Float) object; /* Исправление ошибки! Так было Double a = (Double) object; */
                 System.out.println("Is float value defined? " + !(a.isNaN()));
             } else if (object instanceof Double) {
                 Double a = (Double) object; /* Исправление ошибки! Так было Float a = (Float) object; */
                 System.out.println("Is double value infinite? " + a.isInfinite());
            }
        }
    }
}

Надеюсь, вам это помогло. Хотя я так и не понял смысл строчки list.remove(new Double("123e-445632"));. Может мне кто-нибудь объяснит в комментариях?

Комментариев нет

Отправить комментарий

Топ 5 популярных постов недели