lundi 9 février 2015

Java if-statement being skipped

the function below takes in a string and a pattern and returns true if they match each other. A '.' matches 1 char and a '*' matches 0 or more. i.e. ("abc", "a.c") should return true. I added a bunch of print statements to see where I went wrong and it seems like the if statement is being skipped even if the str.length() == 1.


I call it w/ System.out.println(expMatch("abc", "a*c"));


Here is the code:



public static boolean expMatch(String str, String pat)
{
if(str.charAt(0) == pat.charAt(0) || pat.charAt(0) == '.')
{
System.out.println("in if");
System.out.println(str.charAt(0));
System.out.println(pat.charAt(0));
System.out.println(str.length());
if(str.length() == 1)
return true;
expMatch(str.substring(1), pat.substring(1));
}

else if(pat.charAt(0) == '*')
{
System.out.println("in else");
System.out.println(str.charAt(0));
System.out.println(pat.charAt(0));
if(str.length() == 1)
return true;
if(str.charAt(0) == pat.charAt(1)) //val of * = 0
expMatch(str, pat.substring(1));
else if(str.charAt(1) ==pat.charAt(1))
expMatch(str.substring(1), pat.substring(1));
}

return false;
}


and the output is in if a a 3 in else b * in if c c 1 false


Even if the length is 1 it skips the if? Any idea why? P.S. I'm not looking for the solution, just why the if statement is being skipped


Aucun commentaire:

Enregistrer un commentaire