Вывод моей программы:
Это тип Double, значение 1.1
Это тип short, значение 100
Это тип Integer, значение -1
error
Когда вводится стринг, на 32 строке идет попытка спарсить в Short. Из-за этого возникает исключение.
Мой итог - (возможно я неправ) - нужно проверка на число. Есть ли готовый булен метод в java проверяющий на число строку?
package com.javarush.task.task15.task1519;
import com.sun.org.apache.xerces.internal.xs.ShortList;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException {
String value = null;
//Solution solution = new Solution();
Double valueDouble = 0d;
short valueShort = 0;
Integer valueInteger = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (!(value = reader.readLine()).equals("exit")) {
/*value = reader.readLine();
if (value.equals("exit")) {
break;
}*/
try {
if (value.contains(".")) {
valueDouble = Double.parseDouble(value);
print(valueDouble);
}
else if (Short.parseShort(value) > 0 && Short.parseShort(value) < 128) {
valueShort = Short.parseShort(value);
print(valueShort);
}
else if (Integer.parseInt(value) <= 0 || Integer.parseInt(value) >= 128) {
valueInteger = Integer.parseInt(value);
print(valueInteger);
}
else print(value);
}
catch (NumberFormatException e) {
System.out.println("error");
}
}
}
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);
}
}
найти, легко потерять, невозможно забытьотладить, если вдруг выяснится, что заложенная в нее логика не исполняется правильным образом. На это можно убить и не один час. PS несмотря на это, использую их постоянно, но это скорее специфика текущего проекта.