Java:java.util.NoSuchElementException

时间:2015-10-28 16:05:55

标签: java java.util.scanner

我正在忙于编写一种扫描文本文件并将其内容添加到数组中的算法。但是我不断收到一条错误消息:

  

"线程中的异常" AWT-EventQueue-0"   java.util.NoSuchElementException"

我已经阅读了java文档并了解到这个错误与我没有正确设置我的文本文件这一事实有关,但是我不明白如何修复它。

我已经包含了我的代码和文本文件的内容:

String [] CardPictureNames = new String [16];   

    try { 
        Scanner car = new Scanner (new File("cardNames.txt")).useDelimiter("#");
        String CN = "";

        while(car.hasNext()){
            for(int j=0; j <= CardPictureNames.length; j++ ){ 
                CN = car.next();
                CardPictureNames[j] = CN;
            }
        }
        car.close();
    } 
    catch (FileNotFoundException ex) {
        Logger.getLogger(MemoryForm.class.getName()).log(Level.SEVERE, null, ex);
        JOptionPane.showMessageDialog(this,"The file containing the names of the cards is missing.");
    }

以下是文本文件的内容:

2 of Clubs#
10 of Clubs#
Ace of Hearts#
Ace of Spades#
Joker#
King of Hearts#
Queen of Clubs#
Queen of Diamonds#
2 of Clubs#
10 of Clubs#
Ace of Hearts#
Ace of Spades#
Joker#
King of Hearts#
Queen of Clubs#
Queen of Diamonds#

有人可以向我解释如何解决这个问题吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

用此

替换你的while / for循环组合
for(int j=0; j <= CardPictureNames.length; j++ ){ 
        if (car.hasNext()) {
            CN = car.nextLine();
            CardPictureNames[j] = CN;
        }
}

你要做的是将它循环两次。这是不必要的。添加if语句是为了防止异常发生,因为没有运行获取卡名称的代码,除非有另一行(最后没有)

现在我假设有更好的方法来做到这一点。但这很有效。而所谓的“更好”&#34;方式可能不会产生太大的影响。