Чтобы понять что число является отрицательным решил создать pattern и matcher. Для проверки того, что matcher работает вывожу Yes в консоль, если ввод начинается с минуса. НО вместе с matcher все равно отрабатывает условие выше, и ввод еще определяется как двузначное число. Как это решить?
package com.javarush.task.task04.task0427;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/*
Описываем числа
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();
int a = Integer.parseInt(str);
int strLength = str.length();
Pattern negative = Pattern.compile("[^-]");
Matcher matcher = negative.matcher(str);
if (strLength == 1 && a % 2 == 0){
System.out.println("четное однозначное число");
}else if (strLength == 1 && a % 2 != 0){
System.out.println("нечетное однозначное число");
}
if (strLength == 2 && a % 2 == 0){
System.out.println("четное двузначное число");
}else if (strLength == 2 && a % 2 != 0){
System.out.println("нечетное двузначное число");
}
if (strLength == 3 && a % 2 == 0){
System.out.println("четное трехзначное число");
}else if (strLength == 3 && a % 2 != 0){
System.out.println("нечетное трехзначное число");
}
if (a > 999){
}
if (matcher.find(0)){
System.out.println("Yes");
}
}
}