1

我想在拍摄前检查头部元素但
java.lang.NullPointerException偷看时抬起,

使用 java BlockingQueue

 BlockingQueue sharedQueue = new LinkedBlockingQueue()

这是我的代码,有什么想法吗?

while(true){
    try {
        if(!sharedQueue.isEmpty()){
            char  ch = (char)sharedQueue.peek();
            if(Character.isDigit(ch)){
                digitTextField.setText(digitTextField.getText()+sharedQueue.take());
            }
        }
    } catch (InterruptedException ex) {
        Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex);
    }
}
4

2 回答 2

4

这是因为您要转换的char对象不允许空值。此外,不要sharedQueue.isEmpty()紧随其后peek- 这就是众所周知的“check-then-act”(检查然后行动)。

您应该定义sharedQueueBlockingQueue<Character>然后使用

if ((Character c = sharedQueue.poll()) != null)

于 2013-04-22T13:14:17.997 回答
1

peek()null未找到元素时返回:

返回:此队列的头部,如果此队列为空,则返回 null

你需要使用:

    if(ch != null && Character.isDigit(ch)){
于 2013-04-22T13:13:26.247 回答