我一直得到这个例外:
Exception in thread "Thread-1" java.lang.NullPointerException
at Info.<init>(Info.java:168)
at Rcon.data(Rcon.java:130)
at Rcon$1.run(Rcon.java:105)
第168行是bot.redScore = Integer.parseInt(matcher.group(2));
else if(str.indexOf("current score") != -1) {
pattern = "Team \\\"(\\w+)\\\" current score \\\"(\\d+)\\\"";
p = Pattern.compile(pattern);
matcher = p.matcher(str);
if(matcher.find()) {
if(matcher.group(1).equalsIgnoreCase("Red")) {
bot.redScore = Integer.parseInt(matcher.group(2));
}
else if(matcher.group(1).equalsIgnoreCase("Blue")) {
bot.blueScore = Integer.parseInt(matcher.group(2));
}
cmd = "score";
}
}
我不知道为什么我一直收到这个错误。 使用正则表达式解析的str是:
Processing: Team "Red" current score "1" with "1" players
当我自己只运行这部分时,它运行正常。 但是当我运行整个程序时,我得到了这个例外。
bot.blueScore和bot.redScore正在另一个类中声明如下:
int redScore = 0;
int blueScore = 0;
我还检查了matcher.group(2)的内容,它返回一个整数,从0到10。 有任何想法吗?我一直在努力工作几个小时。
谢谢!
答案 0 :(得分:4)
bot
可能是null
。确保它不为null(初始化)
那就是说,你应该学会阅读例外 - 这是一项非常核心的技能。 NullPointerException
是最常见的例外 - 您已经识别了该行,如果您检查了该异常的文档,您会看到它通常在引用为null
并且您尝试访问方法时发生/字段就可以了。
答案 1 :(得分:2)
如果获得空指针异常,请查找表单x.y
行上的表达式,并问自己为什么x
为空。在您的情况下,bot
或matcher
必须为空。由于您在前一行使用matcher
进入该行,因此您的变量bot
为空。