package com.javarush.test.level14.lesson08.home10;

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

/* Исправить 4 ошибки
Исправить 4 ошибки в конструкторе NotIncapsulatedClass и отрефактори код
1. В класе NotIncapsulatedClass создать private методы initList(List<Number> list), printListValues, processCastedObjects.
2. Метод initList должен заполнять значениями входящий параметр list:
- найди нужный блок кода в конструкторе, в котором list заполняется значениями
- перенеси его в метод initList
- верни заполненный list.
3. Метод printListValues должен принимать параметр list и вывести в консоль все элементы из списка list:
- метод ничего не возвращает
- найди нужный блок кода в конструкторе, в котором в цикле из списка list выводятся в консоль все значения
- перенеси его в метод printListValues
- исправь 2 ошибки в этом методе.
4. Метод processCastedObjects:
- входящий параметр метода имеет тип List<Number> list
- метод ничего не возвращает
- найди нужный блок кода в конструкторе, в котором в цикле для каждого объекта из списка list проверяется его тип
- перенеси этот блок в метод processCastedObjects
- исправь 2 ошибки в этом методе
- учти, что для объекта типа Float нужно вывести "Is float value defined? " + [Float_object].isNaN()
- учти, что для объекта типа Double нужно вывести "Is double value infinite? " + [Double_object].isInfinite().
*/

public class Solution
{
    public static void main(String[] args)
    {
        new NotIncapsulatedClass();         //обращение к классу /  создание класса через new
    }

    public static class NotIncapsulatedClass
    {
        public NotIncapsulatedClass()
        {
            List<Number> list = new LinkedList<Number>();

            initList(list);
            printListValues(list);
            processCastedObjects(list);         //обращение к методам

        }

        private void processCastedObjects(List<Number> list)
        {
            for (Number object : list)
            {
                if (object instanceof Float)
                {
                    Float a = (Float) object;
                    System.out.println("Is float value defined? " + a.isNaN());
                } else if (object instanceof Double)
                {
                    Double a = (Double) object;
                    System.out.println("Is double value infinite? " + a.isInfinite());
                }
            }
        }

        private void printListValues(List<Number> list)
        {
            for (int i = 0; i < list.size(); i++)
            {
                System.out.println(list.get(i));
            }

        }

        private List<Number> initList(List<Number> list)
        {
            list.add(new Double(1000f));
            list.add(new Double("123e-445632"));
            list.add(new Float(-90 / -3));
            list.remove(new Double("123e-445632"));
            return list;
        }


    }
}