Почему при таком условие число свыше чем 50 000 не воспринимает как Int?
else if (Short.parseShort(in) > 0 && Short.parseShort(in) < 128) {
                        print(Short.parseShort(in));
А если вместо шорт.парсешорт поставить аналогично с интеджер то все работает нормально?
package com.javarush.task.task15.task1519;

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


public class Solution {
    public static void main(String[] args) throws IOException {
        //напиште тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        for (;;) {
            String in = reader.readLine();
            if (in.equals("exit")) {
                break;
            }
            else {
                try {
                    if (in.contains(".")) {
                        print(Double.parseDouble(in));
                    } else if (Short.parseShort(in) > 0 && Short.parseShort(in) < 128) {
                        print(Short.parseShort(in));
                    } else if (Integer.parseInt(in) <= 0 || Integer.parseInt(in) >= 128) {
                        print(Integer.parseInt(in));
                    }
                } catch (NumberFormatException e) {
                   print(in);
                }
            }

//           else {
//              print(in);
//           }

        }

    }

    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);
    }
}