当前位置:编程学习 > JAVA >>

一个java.lang.NullPointerException错误

服务器端:
 private void processSocket(){
     try{
        java.io.InputStream ins = client.getInputStream();
     ous = client.getOutputStream();
     BufferedReader brd = new BufferedReader(new InputStreamReader(ins));
     sendMsg2Me("Welcome!Please type in your username: ");
     String userName = brd.readLine();
    
     sendMsg2Me("Please type in your password: ");
     String pwd = brd.readLine();
    
     user = new UserInfo();
     user.setName(userName);
     user.setPwd(pwd);
     DaoTools dt = new DaoTools();
     boolean loginState = dt.checkLogin(user);
     if(!loginState){
     sendMsg2Me("Invalid Input!");
     this.closeMe();
     return;
     }
     else{
     ChatTools.addClient(this);
     String input = brd.readLine();
     while(!"bye".equals(input)){
     System.out.println("The Server Received: "+ input);
     ChatTools.castMsg(this.user, input);
     input = brd.readLine();
     }}
     }catch(Exception ef){ef.printStackTrace();}
     ChatTools.castMsg(this.user, "I am OffLine.Bye!");
     this.closeMe();
    }
客户端端://使用的是界面输入然后登录,由button引发以下函数。
public boolean loginServer(String name,String pwd){
try{
String input = brd.readLine();
System.out.println("服务器说: "+input);
name += "\r\n";
        ous.write(name.getBytes());//
ous.flush();
System.out.println("客户端已经将用户名发送,等待服务器回应: ");
input = brd.readLine();
System.out.println("服务器说: "+input);
pwd += "\r\n";
ous.write(pwd.getBytes());
ous.flush();
return true;
}catch(Exception ef){
ef.printStackTrace();
}
return false;
}
得到的是一个java.lang.NullPointerException的错误。错误的位置在于
                        ous.write(name.getBytes());//
ous.flush();

希望大家帮忙看看。谢谢喔。 --------------------编程问答-------------------- 你应该调试看看、name是否有值!!!
   最好加上一个判断、如果name没有值、给个默认值、或者直接返回提示name值为空什么的! --------------------编程问答-------------------- 调试后是没有值的。。。。加入默认值后仍然是错误。。。
所以觉得很疑问。
我的调试就是简单在Server端的readLine后面加入System.out.println;
不知道可不可以。。
引用 1 楼  的回复:
你应该调试看看、name是否有值!!!
   最好加上一个判断、如果name没有值、给个默认值、或者直接返回提示name值为空什么的!
--------------------编程问答-------------------- 用debug调试,到报错的这行看你的nam.getBytes()到底有没有获取到值 --------------------编程问答-------------------- 打印下name是否有值? --------------------编程问答-------------------- 有的。不过貌似值是错误的。userName == "user1\r\n\r\n"这个我再看看。谢谢了呀
引用 3 楼  的回复:
用debug调试,到报错的这行看你的nam.getBytes()到底有没有获取到值
--------------------编程问答-------------------- 有值。值也对了。。。
引用 3 楼  的回复:
用debug调试,到报错的这行看你的nam.getBytes()到底有没有获取到值
--------------------编程问答-------------------- 有值。我在ous.write(input.getBytes());处调试的。值是对的。
引用 4 楼  的回复:
打印下name是否有值?
--------------------编程问答-------------------- 应该是ous没有初始化,楼主你的ous初始化代码在哪里
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,