回 帖 发 新 帖 刷新版面

主题:高手帮忙呀

java.lang.NullPointerException
        at chat.ChatViewImpl.setComBox(ChatViewImpl.java:38)
        at chat.ChatModel1Impl.refreshChaters(ChatModel1Impl.java:140)
        at chat.ChatModel1Impl.registerClient(ChatModel1Impl.java:68)
        at chat.ChatViewImpl.<init>(ChatViewImpl.java:27)
        at chat.ChatApp.main(ChatApp.java:14)


这就是在MYSQL里建的数据库:
drop database if exists STOREDB;
create database STOREDB;
use STOREDB;
create table CLIENT(
  NAME varchar(16) primary key,
  MSG varchar(255)
);
insert into CLIENT(NAME,MSG) values('cleint1','');
先谢谢了

回复列表 (共3个回复)

沙发

我这边没你的数据库

private transient ChatGui gui = new ChatGui("test");

gui先实例化下看看

板凳

public void setComBox(Set s) {    
        //--------------------
        gui = new ChatGui(Name);
        //-------------------

        gui.addJComboBox(s);
    }

调用一个类的方法或属性(除static的)时,先确保该类已经被实例化
不然会抛出空指针异常

类ChatGui的方法public void addJComboBox(Set s)  中

while(it.hasNext())
        {
            
            //ch.addItem(it.toString());
            
            ch.addItem(it.next().toString());
            
            
        }


如果你用it.toString(),则导致一直指向原来的叠代器,it.hasNext()一直返回true
从而导致死循环.

hasNext
boolean hasNext()如果仍有元素可以迭代,则返回 true。(换句话说,如果 next 返回了元素而不是抛出异常,则返回 true)。 

返回:
如果迭代器具有多个元素,则返回 true。

next
E next()返回迭代的下一个元素。重复调用此方法直到 hasNext() 方法返回 false,这将精确地一次性返回迭代器指向的集合中的所有元素。 

返回:
迭代的下一个元素。 
抛出: 
NoSuchElementException - 没有更多的元素可以迭代。

3 楼

运行时,是没错了
但点击send时,还是有其他 空指针异常
看了下,多是类没有实例化就直接调用它的方法
或是,如:ch.getSelectedItem().toString();中的ch
我实例化后,ch.getSelectedItem()是可以调用,但它返回的结果是null
所以,再调用.toString(),还是照样会抛空指针异常的.

记住:在你调用类的方法或属性(static除外)时,必须先保证该类有被实例化

其他的空指针异常,自己再慢慢修改吧!

我来回复

您尚未登录,请登录后再回复。点此登录或注册