Я очень надеюсь, что проблема в том, что я не понимаю, как обработать исключение NumberFormatException. try-catch сделала, да только без толку, делала трай-кэч на вообще каждое условие, становится еще дальше от правды.
На экран выводится вот что:
Это тип Double, значение 1.1
Это тип short, значение 100
Это тип Integer, значение -1
Это тип String, значение test
java.lang.NumberFormatException: For input string: "1.1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.javarush.task.task15.task1519.Solution.main(Solution.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
java.lang.NumberFormatException: For input string: "test"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.javarush.task.task15.task1519.Solution.main(Solution.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
java.lang.NumberFormatException: For input string: "exit"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.javarush.task.task15.task1519.Solution.main(Solution.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
package com.javarush.task.task15.task1519;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//напиште тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String input = null;
//int i = 0;
Double d = 0.0;
while(true) {
input = reader.readLine();
//i = Integer.parseInt(input);
Pattern pattern = Pattern.compile("([0-9]*)\\.([0-9])*");
Pattern pattern2 = Pattern.compile("\\D*");
Matcher matcher = pattern.matcher(input);
Matcher matcher2 = pattern2.matcher(input);
boolean res2 = matcher2.matches();
boolean res = matcher.matches();
Integer in;
int i = 0;
//i = Integer.parseInt(input);
if(res){
d = Double.parseDouble(input);
print(d);
}
try {
if (res2 && !(input.equals("exit"))){
print(input);
}
i = Integer.parseInt(input);
//in = Integer.parseInt(input);
if (i > 0 && i < 128) {
short s = (short)i;
print(s);
}
if (i <= 0 || i >= 128) {
in = i;
print(in);
}
}
catch (NumberFormatException e) {
e.printStackTrace();
}
if(input.equals("exit")){
break;
}
}
}
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);
}
}