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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站