Всех приветствую!
Никак не могу понять - почему валидатор не пропускает решение? Чем ему Integer не угодил?
Все вроде верно работает.
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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String str;
while (true) {
str = bufferedReader.readLine();
if (str.equalsIgnoreCase("exit")) break;
else {
try {
if (str.contains(".") && str.matches("-?\\d+[.]\\d+"))
print(Double.parseDouble(str));
else if (Short.parseShort(str) > 0 && Short.parseShort(str) < 128)
print(Short.parseShort(str));
else if (Integer.parseInt(str) <= 0 || Integer.parseInt(str) >= 128)
print(Integer.parseInt(str));
} catch (NumberFormatException e) {
print(str);
}
}
}
}
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);
}
}
/*
Итак, полиморфизм. Вы о нём ещё не забыли? Тогда решаем следующую задачку:
считываем с консоли данные, пока не будет введено слово "exit".
Для каждого значения, кроме "exit", вызываем метод print,
какой именно принт — зависит от значения. Например,
если значение содержит точку, то вызываем print для Double,
а если это число от 0 до 128 — то для short.
*/