package com.javarush.test.level15.lesson12.home01;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

/* Разные методы для разных типов
1. Считать с консоли данные, пока не введено слово "exit".
2. Для каждого значения, кроме "exit", вызвать метод print. Если значение:
2.1. содержит точку '.', то вызвать метод print для Double;
2.2. больше нуля, но меньше 128, то вызвать метод print для short;
2.3. больше либо равно 128, то вызвать метод print для Integer;
2.4. иначе, вызвать метод print для String.
*/

public class Solution {
    public static void main(String[] args) throws IOException {
        //напиште тут ваш код
        ArrayList<String> list = new ArrayList<>();
        String x;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        while(true)
        {
            x = reader.readLine();
            if (x.equals("exit")) break;
            else list.add(x);
        }
        for (String a : list)
        {
            try
            {
                char[] ch = a.toCharArray();
                if (String.valueOf(ch).contains("."))
                {
                    print(Double.parseDouble(a));
                } else if (Integer.parseInt(a) < 128 && (Integer.parseInt(a) > 0)) print(Short.parseShort(a));
                else if (Integer.parseInt(a) >= 128) print(Integer.parseInt(a));
            }
            catch (NumberFormatException e)
            {
                print(a);
            }
        }
    }

    public static void print(Double value) {
        System.out.println("Это тип Double, значение " + value);
    }

    public static void print(String value) {
        System.out.println("Это тип String, значение " + value);
    }

    public static void print(short value) {
        System.out.println("Это тип short, значение " + value);
    }

    public static void print(Integer value) {
        System.out.println("Это тип Integer, значение " + value);
    }
}