Изначально решал через исключения, валидатор не принимал последние 2 пункта - решил через regular expression, валидатор стал еще грубее.
По факту:
0
Это тип Integer, значение 0
128
Это тип Integer, значение 128
127
Это тип short, значение 127
-1
Это тип Integer, значение -1
3.8
Это тип Double, значение 3.8
0.0
Это тип Double, значение 0.0
string
Это тип String, значение string
slovo.3.8
Это тип String, значение slovo.3.8
Подскажите, пожалуйста, в чем причина.
Спасибо.
package com.javarush.task.task15.task1519;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
/*
Разные методы для разных типов
*/
public class Solution {
public static boolean isNumber(String str)
{
return (str.matches("-?\\d+") || str.matches("-?\\d+\\.\\d+")) ? true : false;
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String a = reader.readLine();
if (a.equals("exit"))
break;
if (isNumber(a) == true) {
if (a.contains(".")) print(Double.parseDouble(a));
else {
if ((Short.parseShort(a) > 0) && (Short.parseShort(a) < 128)) print(Short.parseShort(a));
else { if ((Integer.parseInt(a) <= 0) || (Integer.parseInt(a) >= 128)) print(Integer.parseInt(a));} } }
else { 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);
}
}