source-java 编程中出现下面的错误

问题描述

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)

解决方案

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

解决方案二:

http://www.cnblogs.com/newsouls/p/4038273.html
两个线程操作同一个集合必须同步。

解决方案三:

同时操作线程控制一个东西会出现写冲突,把代码贴出来看看

时间: 2024-09-16 18:53:50

source-java 编程中出现下面的错误的相关文章

java代码-关于CSDN英雄会挑战赛 java编程中的一些问题

问题描述 关于CSDN英雄会挑战赛 java编程中的一些问题 各位大神,我在挑战英雄会的题目的时候,在线下运行的没有问题,可是一提交就会提示,"挑战失败:你的程序正常编译,不过运行时发生错误,通常是代码有问题,如除数为零数组上下界溢出等" 我觉得可能是java输入数据时的问题,因为题目要求:输入多行数据,输出多行我是这样写的: Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do {

Java编程中异常处理的优劣之道

Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理.不过,我认为很多人其实并没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道点概念.本文就对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为: 好,不好和恶劣三种. 同时向你提供了一些解决这些问题的技巧. 首先解释一些java异常处理中必须搞清楚的定义和机制.Java语言规范将自Error类或RuntimeException类衍生出来的任何违例都

Java编程中异常处理的优劣

 Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理.不过,我认为很多人其实没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道概念.我想对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为:     好,不好和恶劣三种.     同时提供了一些解决这些问题的技巧.     首先解释一些java异常处理中必须搞清楚的定义和机制.Java语言规范将自Error类或RuntimeException类衍生

java编程中我想用显示密码把密码显示出来了然而登录却有错 求解 急用 (我想了一天实在没法了)

问题描述 java编程中我想用显示密码把密码显示出来了然而登录却有错 求解 急用 (我想了一天实在没法了) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class weixin extends JFrame implements ActionListener { JPanel panmain; //面板 JLabel lblname,lblpassword,lblphoto; //标签 JLab

Java编程中10个最佳的异常处理技巧_java

在实践中,异常处理不单单是知道语法这么简单.编写健壮的代码是更像是一门艺术,在本文中,将讨论Java异常处理最佳实践.这些Java最佳实践遵循标准的JDK库,和几个处理错误和异常的开源代码.这还是一个提供给java程序员编写健壮代码的便利手册.Java 编程中异常处理的最佳实践 这里是我收集的10个Java编程中进行异常处理的10最佳实践.在Java编程中对于检查异常有褒有贬,强制处理异常是一门语言的功能.在本文中,我们将尽量减少使用检查型异常,同时学会在Java编程中使用检查型VS非检查型异常

深入理解Java编程中异常处理的优劣_java

Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理.不过,我认为很多人其实没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道概念.我想对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为:好,不好和恶劣三种.同时提供了一些解决这些问题的技巧.首先解释一些java异常处理中必须搞清楚的定义和机制.Java语言规范将自Error类或RuntimeException类衍生出来的任何违例都称作"不可检查&

图片-java ee中的EJB出现错误:

问题描述 java ee中的EJB出现错误: 解决方案 看异常貌似是jdbc/MysqlDB_pm 这个数据源配置的问题

仔细触摸Java编程中的“文档”和“包”

编程 什么是包 Java中的包(Package)其实指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface).Java语言的包可以被另一个Java开发包所使用.如果我们要引用某个包中的类,用import关键字来标明即可.比如: import java.util. date=new Date  提示:import java.util.表示java.util中的所有公有类和接口被引入到当前包.这里的匹配符可以调入多个类名. 常用的Java标准包 JDK为我

跨越边界: 活动记录和Java编程中特定于域的语言

DSL 是专门解决特定于域问题的语言.通过更接近问题的操作,DSL 可以提供在通用语言中可能找不 到的好处.Java 世界中充满了 DSL.属性文件.Spring 上下文.标注的某种用法以及 Ant 任务,都是 DSL 的示例. 在开始研究其他像 Ruby 这样的语言的时候,我开始理解到 Java 语言目前对于 DSL 还没有良好的把 握.在这篇文章中,将看到 Ruby 使用的四种集成干净的 DSL 的技巧.然后,将看到在 Java 语言中可 能存在的选项是什么. 隐藏语言的世界 虽然您可能不知