str=sc.nextLine();
принимает все как строку, поэтому здесь нет исключений.Попробуйте использовать оператор, подобный этому
int num;
&
num=sc.nextInt();
, и вы обнаружите, что исключение будет перехвачено, поэтому нет проблем с кодом.
Предположим, что пользователь введет "This is 1 String"
, даже если оносодержит целое число, но все же это строка.То же самое применяется каждый раз, даже когда пользователь вводит "43728"
, он все еще считается строкой
, вот как вы можете достичь своей цели
while(true){
System.out.print("Enter test string");
str=sc.nextLine();
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
//System.out.println(matcher.group(0));
continue;
}
break;
}