- 1
Why am i getting java.lang.illegalstateexception why i run my code yet it has no errors
Import java.util.regex.Matcher; Import java.util.regex.pattern; public class RegularExpressionDemo{ public static void main(String[]args){ String s="I will be home in 10 minutes"; Pattern p=Pattern.compile("\\bin\\b"); Matcher m=p.matcher(s); while(m.find()); System.out.println("pattern matches"+m.group()+"at"+m.start()); } }
7 Answers
+ 7
The problem is your while loop. You need to use curly brackets.
while(m.find());
If you use semicolon the loop has no body. Means you are calling m.group() and m.start() also when m.find() is not true.
Here is a correct code:
https://code.sololearn.com/ch2TqOpRcnXO/?ref=app
+ 6
Hello John
About the exception:
"Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation."
https://docs.oracle.com/javase/7/docs/api/java/lang/IllegalStateException.html
So you need to control all your method calls.
+ 2
group() throws IllegalStateException - "If no match has yet been attempted, or if the previous match operation failed"
+ 1
1st error: There shouldn't be a semi colon after youe while statement.
2nd error: Enclose the statements written after the while statement within curly brackets i.e. { }
Your final while statement should look like this:
while(m.find())
{
System.out.println("pattern matches"+m.group()+"at"+m.start())
}
0
I am using Eclipse to run my codes so when I fail to place a semi colon at the end of the loop it usually says that there is an error but after placing the semi colon there is no errors
0
'while' is like 'if' and 'for': it will run the code in between {} if condition matches.
while(numberOfUsers > 0) {
//do stuff as long as
//numberOfUsers is above zero
}
Placing ; after while will most likely make it check condition forever, resulting in some crash. At least it's easy to notice.
I'll add code example where accidentally added ; won't crash the code, but make output wrong. EDIT: here it is:
https://code.sololearn.com/cl1899qT2x5a/?ref=app
0
Thank you