Решил через гугл и матчер\паттерн без трай\кетч. Но сам в регулярных выражениях не силен, поэтом все делал методом проб и ошибок. Сделал сборки из вот таких условий:
"(-|\\+)?(((^\\.\\d+)?)|(\\d+(^\\.\\d+)?)|(\\d+(^\\.)?))"
- это должно было быть: начинается с "-\+" и не содержит точку "^\\." в начале, в середине, в конце. Собственно конструкция выше родилась добавлением отрицания " ^ " из конструкции:
"(-|\\+)?(((\\.\\d+)?)|(\\d+(\\.\\d+)?)|(\\d+(\\.)?))"
где данная конструкция для Double на ура отрабатывает:
+0.3
Это тип Double, значение 0.3
-.3
Это тип Double, значение -0.3
0.
Это тип Double, значение 0.0
Соответственно, все что не попадает в эту конструкцию - все строка. Вопрос: почему, когда я добавил "^\\.", отрицание точки в первое условие на проверку short\Integer (начинается с +\- и не содержит точку, а только цифры), у меня все рушится при:
0.
Это тип Double, значение 0.0
+.3
Это тип Double, значение 0.3
.3
Exception in thread "main" java.lang.NumberFormatException: For input string: ".3"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:569)
	at java.lang.Integer.parseInt(Integer.java:615)
	at com.javarush.task.task15.task1519.Solution.main(Solution.java:22)
т.е.в данном примере первое условие не проходит и идет ветка на Double, второй вариант - так же уходим на Double, а третий вариант - проходит "без точки"(!) и пытается ".3" преобразовать в Integer.parseInt(); хотя 0.3 +0.3 -0.3 это условие забраковывает, т.к видит там точку. Я же указываю в условии: после плюс\минуса -> (-|\\+)? не должно начинаться на "точку и цифры" -> (((^\\.\\d+)?) | ... | ...). Спасибо не равнодушным! :)