【问题标题】:Iterating through an array of files遍历文件数组
【发布时间】:2019-05-26 20:06:45
【问题描述】:

我正在编写一个程序,它将我写的一些诗显示到JTextArea 中,每当我按下JButton“下一步”时,它应该将我的另一首诗读入JTextArea

但是,我只能在删除 filearray 并仅读取单个文件时这样做。

创建一个文件数组并尝试在每次单击下一步时调用number++ 进行迭代。我也过滤掉了一些不相关的代码。

public class PoemWindow extends JFrame implements ActionListener
{
    private int n=0;
    BufferedReader br;
    JTextArea textAreaOne;
    FileReader file[];
}

public PoemWindow() throws IOException{
    file[0] = new FileReader("C:/Poems/Freedom.txt");
    file[1] = new FileReader("C:/Poems/Masturbation.txt");
    file[2] = new FileReader("C:/Poems/Life.txt");
    file[3] = new FileReader("C:/Poems/Loneliness.txt");
    add(textAreaOne)
}

public void actionPerformed(ActionEvent e){
    if(e.getSource()==nextButton) {
        while(n<=4) {   
            try {
                br = new BufferedReader(file[n]);
                textAreaOne.read(br,null);
                n++;
                textAreaOne.requestFocus();
            } catch(Exception b) {
                System.out.println("This is an error"); 
            }
        }
    }

当我读取单个文件时它可以工作,但每当我实例化一个文件时[] 它给了我一个NullPointerException,它甚至不会运行......

【问题讨论】:

  • 虽然您的问题是数组初始化,但您还需要记住数组中的最后一个索引比元素数少一 -> 所以如果您有 4 个元素的数组,最后一个索引是 3(如它从 0 开始)所以你的 while 循环应该是 while (n&lt;4)

标签: java arrays textarea filereader


【解决方案1】:

当我读取单个文件时它可以工作,但每当我实例化一个文件时 [] 它给了我一个 NullPointerException 并且它甚至不会运行...

这是一个创建带有五个插槽 (0 --> 4) 的数组的示例:

FileReader[] file = new FileReader[4];

【讨论】:

  • 所以,把 FileReader file[];作为字段值可能是问题所在?因为我还没有设置应该有多少个插槽。
  • 正确。你需要给数组一个初始的 size 以便你有可用的插槽来放置东西。
  • 好的,谢谢您的验证 :) 必须找到另一种方法来创建它。
  • 另一种方法是不使用数组。使用 List,您可以简单地添加任意数量的项目,它会自动为您增长:List&lt;FileReader&gt; files = new ArrayList&lt;&gt;(); 添加可能看起来像 files.add(new FileReader("C:/Poems/Freedom.txt"));。有关更多示例,请参阅Java ArrayList Tutorial with Examples
  • 感谢代码,让我省了很多麻烦。作为一个新手,用大锤敲击你的头骨很容易,而不是使用大锤。
猜你喜欢
  • 2016-08-29
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2016-01-31
相关资源
最近更新 更多