使用'if'语句检查后出现NullPointer异常

时间:2015-04-11 09:18:06

标签: java

我有机器人连接到IRC服务器并且它一直没有崩溃机器人在线程"主要"中的异常崩溃。 bot.Report.main上的java.lang.NullPointerException(Report.java:47) 47行是

if (!(str.split(" ")[1].equals("QUIT") || str.split(" ")[1].equals("PART") || str.split(" ")[1].equals("JOIN")))

修改更多代码

String str = null;    
PrintWriter o;
            Socket s;
            BufferedReader i1;
            s = new Socket("", 6667);
            i1 = new BufferedReader(new InputStreamReader(s.getInputStream()));
            o = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
            o.print("PASS " + "" + "\r\n");
            o.print("USER " + "" + " 0 * :" + ""
                    + "\r\n" + "NICK " + "" + "\r\n");
            o.print("JOIN " + "#test" + "\r\n");
            o.flush();
    while (s.isConnected()) {
                str = i1.readLine();
                StringBuffer stringBuffer = null;
    if (!(str.split(" ")[1].equals("QUIT") || str.split(" ")[1].equals("PART") || str.split(" ")[1].equals("JOIN"))) {
    ......

2 个答案:

答案 0 :(得分:1)

似乎if(str != null)解决了我的问题。

答案 1 :(得分:1)

作为一种好的做法,在请求任何属性/方法之前,您应该始终检查null。

如果您可以重写if语句

if(str!= null&&(!(str.split("")[1] .equals(" QUIT")|| str.split( "")[1] .equals(" PART")|| str.split("")[1] .equals(" JOIN& #34;))))  ......