Может быть я и решил не через try/catch, но код работает при любых введённых параметрах как и сказано в задаче не совсем понимаю почему так🙃
package com.javarush.task.task15.task1519;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String phrase;
while (!(phrase=reader.readLine()).equals("exit")) {
char[] chars = phrase.toCharArray();
if (phrase.contains(".")) {
print(Double.parseDouble(phrase));
continue;
}
boolean b = true;
int i = Character.toString(chars[0]).contains("-") ? 1 : 0;
while (b == true && i < chars.length) {
b = Character.isDigit(chars[i]);
i++;
}
if (b == true && (Integer.parseInt(phrase) <= 0 || Integer.parseInt(phrase) >= 128)) {
print(Integer.parseInt(phrase));
continue;
} else if (b == true && (Integer.parseInt(phrase) > 0 || Integer.parseInt(phrase) < 128)) {
print(Short.parseShort(phrase));
continue;
}
print(phrase);
}
}
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);
}
}