求改错

不可笑的小丑 2012-12-25 12:19:44
import java.io.*;
import java.net.*;
import java.sql.*;
class ser1 implements Runnable{
ServerSocket ss;
Socket sc;
DataInputStream in=null;
DataOutputStream out=null;
InputStream in_data;
OutputStream out_data;
String str;
public ser1() {
try{
ss=new ServerSocket(1234);
while(true){
sc=ss.accept();
Thread m=new Thread(this);
m.start();
}
}
catch(IOException ee){
System.out.println("错误");
}
}
public void run() {
try{
while(true){
in_data=sc.getInputStream();
out_data=sc.getOutputStream();
in=new DataInputStream(in_data);
out=new DataOutputStream(out_data);

str=in.readUTF();
out.writeUTF(str);
if(str.equals("end")){
in.close();
out.close();
sc.close();
}

}
}
catch(IOException e){
System.out.println("输入输出流错误");
}

}

}
class ser2 implements Runnable{
ServerSocket ss;
Socket sc;
DataInputStream in=null;
DataOutputStream out=null;
InputStream in_data;
OutputStream out_data;
String str;
String driver="sun.jdbc.odbc.JdbcOdbcDriver";
static String db="D:\\Java\\JavaWork\\NWIND.MDB";
String url1="jdbc:odbc:NWIND";
Connection conn=null;
Statement stmt=null;
PreparedStatement ps=null;
ResultSet rs=null;
String user="";
String pwd="";
String a="select * from 学生 where 姓名=";
String s1;
String s2;

public void connect()throws SQLException {
try {
Class.forName(driver);
conn = DriverManager.getConnection(url1,user,pwd);
stmt = conn.createStatement();
rs=stmt.executeQuery(a+str);
while (rs.next()){
s1=rs.getString(1);
s2=rs.getString(2);
}
}catch (Exception e){
System.out.println(e);
}finally{
stmt.close();
conn.close();
}
}


public ser2() {
try{
ss=new ServerSocket(1234);
while(true){
sc=ss.accept();
Thread m=new Thread(this);
m.start();
}
}
catch(IOException ee){
System.out.println("错误");
}
}
public void run() {
try{
while(true){
in_data=sc.getInputStream();
out_data=sc.getOutputStream();
in=new DataInputStream(in_data);
out=new DataOutputStream(out_data);
str=in.readUTF();
String[] ary = str.split(" ");
while(str.equals("end"))



if(ary[0].equals(s1)){
if(ary[2].equals(s2)){
new ser1();
out.writeUTF("密码正确");
break;

}
else if(ary[2]!=s2){
out.writeUTF("密码错误");

}
}

in.close();
out.close();
sc.close();


}
}
catch(IOException e){
System.out.println("输入输出流错误");
}

}



}
class ser{
public static void main(String[] args){

new ser2();
}
}


结果是:
错误
...全文
309 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
笑莫问 2012-12-26
  • 打赏
  • 举报
回复
错误,真有意思。。。嘿嘿
isbn888 2012-12-26
  • 打赏
  • 举报
回复
xiaozhu1991 2012-12-25
  • 打赏
  • 举报
回复
Test1.actionPerformed(Test.java:77) 应该是test.java里面的代码new test1();有问题,也就是test1类的构造函数有空指针问题
不可笑的小丑 2012-12-25
  • 打赏
  • 举报
回复
求大神,能改的话帮我多改下,分数我还会追加的,急急急!!!
失落夏天 2012-12-25
  • 打赏
  • 举报
回复
catch(IOException ee){ System.out.println("错误"); } 这里最好还是改成 e.printStackTrace();比较合适。 另外:java.lang.NullPointerException 空指针异常 很明显啊,你有一个对象未实例化或者忘了给某个变量赋值了。
不可笑的小丑 2012-12-25
  • 打赏
  • 举报
回复
服务器端程序: import java.io.*; import java.net.*; import java.sql.*; class ser1 implements Runnable{ ServerSocket ss; Socket sc; DataInputStream in=null; DataOutputStream out=null; InputStream in_data; OutputStream out_data; String str; public ser1() { try{ ss=new ServerSocket(1234); while(true){ sc=ss.accept(); Thread m=new Thread(this); m.start(); } } catch(IOException ee){ System.out.println("错误"); } } public void run() { try{ while(true){ in_data=sc.getInputStream(); out_data=sc.getOutputStream(); in=new DataInputStream(in_data); out=new DataOutputStream(out_data); str=in.readUTF(); out.writeUTF(str); if(str.equals("end")){ in.close(); out.close(); sc.close(); } } } catch(IOException e){ System.out.println("输入输出流错误"); } } } class ser2 implements Runnable{ ServerSocket ss; Socket sc; DataInputStream in=null; DataOutputStream out=null; InputStream in_data; OutputStream out_data; String str; String driver="sun.jdbc.odbc.JdbcOdbcDriver"; static String db="D:\\Java\\JavaWork\\NWIND.MDB"; String url1="jdbc:odbc:NWIND"; Connection conn=null; Statement stmt=null; PreparedStatement ps=null; ResultSet rs=null; String user=""; String pwd=""; String a="select * from 学生 where 姓名="; String s1; String s2; public ser2() { try{ ss=new ServerSocket(1234); while(true){ sc=ss.accept(); } } catch(IOException ee){ ee.printStackTrace(); System.out.println("错误"); } } public void run() { try{ while(true){ in_data=sc.getInputStream(); out_data=sc.getOutputStream(); in=new DataInputStream(in_data); out=new DataOutputStream(out_data); str=in.readUTF(); String[] ary = str.split(" "); while(str.equals("end")) if(ary[0].equals(s1)){ if(ary[2].equals(s2)){ new ser1(); out.writeUTF("密码正确"); break; } else if(ary[2]!=s2){ out.writeUTF("密码错误"); } } in.close(); out.close(); sc.close(); } } catch(IOException e){ System.out.println("输入输出流错误"); } } public void connect()throws SQLException { try { Class.forName(driver); conn = DriverManager.getConnection(url1,user,pwd); stmt = conn.createStatement(); rs=stmt.executeQuery(a+str); while (rs.next()){ s1=rs.getString(1); s2=rs.getString(2); } }catch (Exception e){ System.out.println(e); }finally{ stmt.close(); conn.close(); } } } class ser{ public static void main(String[] args){ new ser2(); } } 客户端程序: import java.awt.*; import java.awt.event.*; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.*; class Test1 implements ActionListener { JFrame f; Container cp; JLabel m; JTextField x; JLabel n; JTextField y; JButton jb; String a1; String a2; Socket s = null; DataInputStream in=null; DataOutputStream out=null; Socket sc; InputStream in_data; OutputStream out_data; String str; int i=0; public Test1() { f=new JFrame("lv"); cp=f.getContentPane(); m=new JLabel("请输入用户名"); x=new JTextField(10); n=new JLabel(" 请输入密码"); y=new JTextField(10); jb=new JButton("确定"); cp.setLayout(new FlowLayout()); cp.add(m); cp.add(x); cp.add(n); cp.add(y); cp.add(jb); jb.addActionListener(this); f.setSize(230, 200); f.validate(); f.setVisible(true); a1=x.getText(); a2=y.getText(); } public void actionPerformed(ActionEvent e) { try{ sc=new Socket("10.2.57.170",1234); }catch(IOException e1){ System.out.println("找不到服务器"); } try{ in_data=sc.getInputStream(); out_data=sc.getOutputStream(); }catch(IOException e2){ System.out.println("建立输入输出流错误"); } try{ str=in.readUTF(); out.writeUTF(a1+" "+a2); out.flush(); if(str.equals("密码正确")){ out.writeUTF("end"); in.close(); out.close(); sc.close(); new Test2(); f.setVisible(false); } else if(str.equals("密码错误")){ JOptionPane.showMessageDialog(f,"密码错误"); } }catch(IOException e3){ System.out.println("线路读写错误"); } } } class Test2 implements ActionListener { public Test2(){ JFrame f=new JFrame("吕彬龙"); Container cp=f.getContentPane(); JLabel a=new JLabel("吕彬龙"); JButton a1=new JButton("聊天"); cp.setLayout(new FlowLayout()); cp.add(a); cp.add(a1); a1.addActionListener(this); f.setSize(300,500); f.setVisible(true); } public void actionPerformed(ActionEvent e) { new Test3(); } } class Test3 implements ActionListener { DataInputStream in=null; DataOutputStream out=null; Socket sc; InputStream in_data; OutputStream out_data; String str; String s1; JTextArea text1; JTextArea text2; String text_2; String text; public Test3(){ text1=new JTextArea(20,50); text2=new JTextArea(8,50); JFrame f=new JFrame("聊天"); Container cp=f.getContentPane(); JScrollPane x=new JScrollPane(text1); JButton jb=new JButton("发送"); cp.setLayout(new FlowLayout()); cp.add(x); cp.add(text2); cp.add(jb); jb.addActionListener(this); f.setSize(600,600); f.setVisible(true); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent we){ try{ out.writeUTF("end"); in.close(); out.close(); sc.close(); System.exit(0); }catch(IOException e){ System.out.println("输入输出流错误"); } } }); while(true){ try{ s1=in.readUTF(); }catch(Exception ee){ System.out.println("接收错误"); } Date dt = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss aa"); text=sdf.format(dt); text1.setText(text1.getText()+text+"\n"+s1+"\n"); } } public void actionPerformed(ActionEvent e) { try{ sc=new Socket("10.2.57.170",1234); }catch(IOException e1){ System.out.println("找不到服务器"); } try{ in_data=sc.getInputStream(); out_data=sc.getOutputStream(); }catch(IOException e2){ System.out.println("建立输入输出流错误"); } try{ out.writeUTF(text_2); }catch(IOException e3){ System.out.println("线路读写错误"); } Date dt = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss aa"); text=sdf.format(dt); text_2=text2.getText(); text1.setText(text1.getText()+text+"\n"+text_2+"\n"); text2.setText(null); } } class Test{ public static void main(String[] args) { new Test1(); } } 错误是: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Test1.actionPerformed(Test.java:77) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6297) at javax.swing.JComponent.processMouseEvent(JComponent.java:3275) at java.awt.Component.processEvent(Component.java:6062) at java.awt.Container.processEvent(Container.java:2039) at java.awt.Component.dispatchEventImpl(Component.java:4660) at java.awt.Container.dispatchEventImpl(Container.java:2097) at java.awt.Component.dispatchEvent(Component.java:4488) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166) at java.awt.Container.dispatchEventImpl(Container.java:2083) at java.awt.Window.dispatchEventImpl(Window.java:2489) at java.awt.Component.dispatchEvent(Component.java:4488) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:668) at java.awt.EventQueue.access$400(EventQueue.java:81) at java.awt.EventQueue$2.run(EventQueue.java:627) at java.awt.EventQueue$2.run(EventQueue.java:625) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$3.run(EventQueue.java:641) at java.awt.EventQueue$3.run(EventQueue.java:639) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:638) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
不可笑的小丑 2012-12-25
  • 打赏
  • 举报
回复
错误信息就是输出“错误”这两个字
nmyangym 2012-12-25
  • 打赏
  • 举报
回复
类似的问题,在Test3里也存在。也要给in,out赋值。
snow-is-my-Love 2012-12-25
  • 打赏
  • 举报
回复
求错误信息
MiceRice 2012-12-25
  • 打赏
  • 举报
回复
把详细错误输出出来看看: catch(IOException ee){ ee.printStackTrace(); // 增加这句话 System.out.println("错误"); } 估计很可能是端口已经被用过了。
nmyangym 2012-12-25
  • 打赏
  • 举报
回复
public Test1()
{
 


f=new JFrame("lv");
    cp=f.getContentPane();
    m=new JLabel("请输入用户名");
x=new JTextField(10);
n=new JLabel("    请输入密码");
y=new JTextField(10);
jb=new JButton("确定");
cp.setLayout(new FlowLayout());
cp.add(m);
cp.add(x);
cp.add(n);
cp.add(y);
cp.add(jb);
jb.addActionListener(this);
f.setSize(230, 200);
f.validate();
f.setVisible(true);	
a1=x.getText();
a2=y.getText();

}
public void actionPerformed(ActionEvent e) {

try{
sc=new Socket("10.2.57.170",1234);
}catch(IOException e1){
System.out.println("找不到服务器");
}
try{
in_data=sc.getInputStream();
out_data=sc.getOutputStream();
//
//------------------加上两句试试
//
in=new DataInputStream(in_dta);
out= new DataOutputStream(out_data);


}catch(IOException e2){
System.out.println("建立输入输出流错误");
}
try{
str=in.readUTF();
out.writeUTF(a1+" "+a2);
out.flush();
if(str.equals("密码正确")){
out.writeUTF("end");
in.close();
out.close();
sc.close();
new Test2();
f.setVisible(false);
}
else if(str.equals("密码错误")){
JOptionPane.showMessageDialog(f,"密码错误");

}
}catch(IOException e3){
System.out.println("线路读写错误");
}



}
}
MiceRice 2012-12-25
  • 打赏
  • 举报
回复
你请人帮忙改错误,至少自己大致得知道错误该怎么定位吧。。。 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Test1.actionPerformed(Test.java:77) 这个空指针,是在77行,你至少指出77行是哪行。。。然后再看看是什么东西没有初始化好啥的。
huage 2012-12-25
  • 打赏
  • 举报
回复
out.writeUTF(a1+" "+a2); out.flush(); 这里有问题吧 out为空

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧