Andy_muge 2015-05-26 11:20 采纳率: 0%
浏览 1837

java 编程中出现下面的错误

package Chat;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class chatFrame extends JFrame implements ActionListener,Runnable{
LoginFrame frame=new LoginFrame();
Thread thread;
JPanel contentPane;
JScrollPane jScrollPane1=new JScrollPane();
JScrollPane jScrollPane2=new JScrollPane();
JButton jBtnSend=new JButton("发送");
JButton jBtnClear=new JButton("清空");
JTextArea jTextArea1=new JTextArea();
JTextArea jTextArea2=new JTextArea();
JScrollPane jScrollPane3=new JScrollPane();
JList jList1=new JList();
Socket socket;
int port=6000;
DataInputStream in;
DataOutputStream out;
Vector vector=new Vector();
String chatstr,str;
public chatFrame(){
setTitle("聊天室");
setSize(602,515);
this.setResizable(false);
this.setVisible(false);
try{
setDefaultCloseOperation(EXIT_ON_CLOSE);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
try{
out.writeUTF("下线了:"+frame.name+"/"+frame.sex);
out.close();
in.close();
socket.close();
}catch(Exception ee){ }
finally{
frame.dispose();
dispose();
}
}
}
);
jbInit();
}catch(Exception exception){
exception.printStackTrace();
}
}
void jbInit()throws Exception{
frame.setVisible(true);
jScrollPane1.setBounds(2,2,445,320);
jScrollPane2.setBounds(1,333,448,95);
jScrollPane3.setBounds(458,6,139,424);
jBtnSend.setBounds(93,441,78,31);
jBtnClear.setBounds(185,441,76,31);
jTextArea1.setEditable(false);
contentPane=(JPanel)getContentPane();
contentPane.setLayout(null);
contentPane.add(jScrollPane2);
contentPane.add(jScrollPane1,null);
contentPane.add(jScrollPane3);
contentPane.add(jBtnSend);
contentPane.add(jBtnClear);
jScrollPane1.getViewport().add(jTextArea1);
jScrollPane2.getViewport().add(jTextArea2);
jScrollPane3.getViewport().add(jList1);
jBtnClear.addActionListener(this);
jBtnSend.addActionListener(this);
try{
//InetAddress address=InetAddress.getLocalHost();
socket=new Socket("127.0.0.1",port);
in=new DataInputStream(socket.getInputStream());
out=new DataOutputStream(socket.getOutputStream());
}catch(Exception e){
setVisible(true);
jTextArea2.setText("无法连接服务器...");
}
if(thread==null){
thread=new Thread(this);
thread.start();
}
frame.setClection(socket,in,out);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==jBtnSend){
sendStr();
}
if(e.getSource()==jBtnClear){
jTextArea1.setText("");
}
}
public void sendStr(){
chatstr=jTextArea2.getText();
if(chatstr.equals("")){
jTextArea2.setText("please say a word:");
return;
}
try{
out.writeUTF(frame.name+":"+chatstr);
jTextArea2.setText("");
}catch(Exception ee){ }
}
public void run(){
String sl=null;
String ss=null;
String s=null;
while(true){
try{
sl=in.readUTF();
}catch(Exception ee){
vector.removeAllElements();
jList1.setListData(vector);
jTextArea2.setText("已经与服务器断开...");
return;
}
if(sl.startsWith("可以注册")){
frame.setVisible(true);
setTitle("昵称..."+frame.getName());
continue;
}
else if(sl.startsWith("该用户已经注册")){
frame.jTextField1.setText("请重新输入昵称");
continue;
}
else if(sl.startsWith("新用户")){
StringTokenizer st=new StringTokenizer(sl,":");
ss=null;
s=null;
ss=st.nextToken();
s=st.nextToken();
vector.addElement(s);
jList1.setListData(vector);
continue;
}
else if(sl.startsWith("下线了")){
StringTokenizer st=new StringTokenizer(sl,":");
ss=null;s=null;
ss=st.nextToken();
s=st.nextToken();
vector.removeElement(s);
jList1.setListData(vector);
continue;

        }
        jTextArea1.append(sl+"\n");
    }
}

}


Exception in thread "Thread-2" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at Chat.chatFrame.run(chatFrame.java:133)
at java.lang.Thread.run(Unknown Source)

  • 写回答

3条回答

  • DreamTHT 2015-05-26 11:29
    关注

    是不是有多线程操作同一个东西了??

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试