Не проходит по последнему пункту, вроде тестировал на всём что можно (даже с пустой строкой) - работает исправно
вот код :
import java.io.*;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String a;
Double ifDouble;
Integer ifInteger = null;
while(!"exit".equals((a = r.readLine()))) { //проверка на exit
if(a.contains(".")) {//проверка на наличие точки
try {
ifDouble = Double.parseDouble(a); //проверка можно ли парсить
print(ifDouble); //если да, печатаем дабл
continue;
} catch (NumberFormatException e){
print(a);// нет - печатаем стринг
}
}
try {
ifInteger = Integer.parseInt(a); // по аналогии с дабл проверяем инт
if(ifInteger > 0 && ifInteger < 128) {// проверка на шорт
int ifint = ifInteger;
print((short) ifint);
}
else {
print(ifInteger);
}
} catch (NumberFormatException e1) { // если нет - печатаем строку
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);
}
}