regex - Inherited Null Pointer Exceptions (Java) -
in program writing have following code create regular expression word , retrieve words match series of different arraylists.
public arraylist<string> solveword(string str) { string regex = ""; string[] strarr = str.split(""); (string temp : strarr) { if (temp.equals(" ")) { regex = regex + "[a-z]"; } else { string s = "[" + temp + "]"; regex = regex + s; } } int x = str.length(); arraylist<string> m = null; system.out.println("2ns"); switch (x) { case 1: break; case 2: m = let2; break; case 3: m = let3; break; case 4: m = let4; break; case 5: m = let5; break; case 6: m = let6; break; case 7: m = let7; break; case 8: m = let8; break; case 9: m = let9; break; case 10: m = let10; break; case 11: m = let11; break; case 12: m = let12; break; case 13: m = let13; break; case 14: m = let14; break; case 15: m = let15; break; case 16: m = let16; break; } system.out.println(" ns"); arraylist<string> trans = retrieve(str,m,regex); return trans; } private arraylist<string> retrieve(string word, arraylist<string> arr, string reg) { arraylist<string> ex = arr; arraylist<string> matches = new arraylist<string>(); (string temp : ex) { if (temp.matches(reg)) { matches.add(temp); } } return matches; }
when call solve(string str) class, line "strarr = str.split(""); throws null pointer exception. other problem having when test class on own, line if(temp.matches(reg)) gives following error.
exception in thread "main" java.util.regex.patternsyntaxexception: unclosed character class near index 12 [][h][a-z][h] ^ @ java.util.regex.pattern.error(unknown source) @ java.util.regex.pattern.clazz(unknown source) @ java.util.regex.pattern.sequence(unknown source) @ java.util.regex.pattern.expr(unknown source) @ java.util.regex.pattern.compile(unknown source) @ java.util.regex.pattern.<init>(unknown source) @ java.util.regex.pattern.compile(unknown source) @ java.util.regex.pattern.matches(unknown source) @ java.lang.string.matches(unknown source) @ words.fillintheblanks.retrieve(fillintheblanks.java:238) @ words.fillintheblanks.solveword(fillintheblanks.java:228) @ words.tester.main(tester.java:12)
can please help?
you cannot have empty square brackets []
in regex. have check if temp
not empty before producing regex:
if (temp.equals(" ")) { regex = regex + "[a-z]"; } else if (temp.length() > 0) { string s = "[" + temp + "]"; regex = regex + s; }
as nullpointerexception, possibility of happening in line string[] strarr = str.split("");
str
null.
Comments
Post a Comment