【问题标题】:junit.Framework.AssertionFailedError trying to Read From a File to a ArrayListjunit.Framework.AssertionFailedError 试图从文件读取到 ArrayList
【发布时间】:2013-11-20 09:13:25
【问题描述】:

我必须从文件中读取,然后将找到的单词放入 ArrayList。

public boolean load(String filename)
{

    try
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("wordlist.txt")));
        String line = null;
        while ((line = br.readLine()) != null)
        {
            String[] values = line.split("\n");
            wordlist.add(new WordPair(answer, question));
        }
    } catch (IOException ioe)
    {
        Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ioe);
    }

    return false;
}

下面是我用过的测试代码:

public void testLoad() {
    assertTrue(wordPairDemo.save(fileName));    
    wordPairDemo.clear();                       
    assertTrue(wordPairDemo.load(fileName));
    assertTrue(wordPairDemo.size() == 3);
    assertEquals(wordPairDemo.lookup("hest"),"horse");
    assertEquals(wordPairDemo.lookup("hus"), "house");
    assertEquals(wordPairDemo.lookup("båd"),"boat");
}

我得到 junit.Framework.AssertionFailedError,但我不确定是什么原因造成的。我已经尝试了几种不同类型的方法,通过扫描仪等,但我总是收到这个错误,我不知道该怎么办。

任何帮助表示赞赏! :)

【问题讨论】:

    标签: java file arraylist bufferedreader


    【解决方案1】:

    根据您在下面评论中的示例,该文件包含单行对: horse,hesthouse,husboat,båd

    您应该根据您使用的实际分隔符进行拆分 - ,。 例如:

    public boolean load(String filename)
    {
        try
        {
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("wordlist.txt")));
            String line = null;
    
            // I'm leaving this loop under the assumption that there may be multiple lines
            while ((line = br.readLine()) != null) 
            {
                String[] values = line.split(",");
                for (int i = 0; i < line.lenght() / 2; ++i) {
                    wordlist.add(new WordPair(values[i], values[i + 1));
                }
            }
        } catch (IOException ioe)
        {
            Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ioe);
        }
    
        return false;
    }
    

    【讨论】:

    • 文件中的单词在添加时没有被任何东西分隔,因此之间没有空格,所以我想这是它们如何添加到文本文件的原因。我在这个假设中是正确的吗?我尝试添加 [0] 和 [1] 但它给了我错误:“需要数组,但找到字符串”。
    • 你能分享一个你的文本文件的例子吗?
    • horse,hesthouse,husboat,båd 3个词对加到word文件中的样子
    • 根据更新的信息修正了我的答案。 @MadsRosenmeyer 考虑也将此信息添加到问题中 - 它会让每个试图帮助您的人更清楚。
    • 是的,抱歉,我仍然不太确定在问题中放置什么内容以便让大家更轻松地回答问题。 :)
    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多