Надо было решать без регулярных выражений или я упустил какой-то вариант и туплю?
package com.javarush.task.task15.task1519;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.regex.Pattern;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException, ParseException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String x = "";
while (!(x.equals("exit"))){
x = reader.readLine();
if (x.matches("\\d+") && Integer.valueOf(x) > 0 && Integer.valueOf(x) < 128 )
print(Short.valueOf(x));
if (x.matches("\\d+") && (Integer.valueOf(x) <= 0 || Integer.valueOf(x) >= 128))
print(Integer.valueOf(x));
if(x.matches("\\d+\\.\\d+"))
print(Double.valueOf(x));
if(x.matches("\\D+")) {
print(x);
}
}
}
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);
}
}