一个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;
不知道可不可以。。
--------------------编程问答-------------------- 用debug调试,到报错的这行看你的nam.getBytes()到底有没有获取到值 --------------------编程问答-------------------- 打印下name是否有值? --------------------编程问答-------------------- 有的。不过貌似值是错误的。userName == "user1\r\n\r\n"这个我再看看。谢谢了呀
--------------------编程问答-------------------- 有值。值也对了。。。
--------------------编程问答-------------------- 有值。我在ous.write(input.getBytes());处调试的。值是对的。
--------------------编程问答-------------------- 应该是ous没有初始化,楼主你的ous初始化代码在哪里
补充:Java , Web 开发