Пытаюсь решить задачу с помощью регулярных выражений, тестировался многими способами и все выводит прекрасно. Однако валидатор решил обидеться и не принимает подобное решение. В чем дело , надеюсь на разъяснение
package com.javarush.task.task15.task1519;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException {
Pattern pat = Pattern.compile("(\\d+)?[.]\\d+");
Pattern pattern = Pattern.compile("^-?\\d+$");
Scanner scan = new Scanner(System.in);
while (true) {
String line = scan.nextLine();
Matcher matcher = pat.matcher(line);
Matcher match = pattern.matcher(line);
if (line.equals("exit")) {
break;
} else if (matcher.find()) {
print(Double.valueOf(line));
} else if (match.find()) {
Short shortLine = Short.parseShort(line);
if (shortLine > 0 & shortLine < 128) {
print(shortLine);
} else if (shortLine >= 128 | shortLine <= 0) {
Integer intLine = Integer.parseInt(line);
print(intLine);
}
}
else if (line.equals("")){
print(line);
}
else {
print(line);
}
}
}
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);
}
}