Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Java中追加时,读取文本文件的输出是重复行吗?_Arrays_Loading_Filereader_Repeat - Fatal编程技术网

Arrays 在Java中追加时,读取文本文件的输出是重复行吗?

Arrays 在Java中追加时,读取文本文件的输出是重复行吗?,arrays,loading,filereader,repeat,Arrays,Loading,Filereader,Repeat,我制作了一个简单的文本框,当按下按钮时,它会从文本文件(逐行)加载文本。它将数字写入JTextArea,然后对数字应用一些方法,并将结果输出到JTextArea 我的问题是,当显示输出时,它会重复这些行-通过示例更容易显示 因此,如果文本文件读取: 1 二, 给出的输出为: 第一个文本区域: 1 二, 第二个文本区域: 结果来自1 结果来自1 结果from2 因此,数字显示得很好,但经过处理的数据却在重复。在这种情况下,它显示程序显示第一个结果,然后显示两个结果 加载按钮的代码为: privat

我制作了一个简单的文本框,当按下按钮时,它会从文本文件(逐行)加载文本。它将数字写入JTextArea,然后对数字应用一些方法,并将结果输出到JTextArea

我的问题是,当显示输出时,它会重复这些行-通过示例更容易显示

因此,如果文本文件读取:

1
二,

给出的输出为:

第一个文本区域:

1
二,

第二个文本区域:

结果来自1
结果来自1
结果from2

因此,数字显示得很好,但经过处理的数据却在重复。在这种情况下,它显示程序显示第一个结果,然后显示两个结果

加载按钮的代码为:

private void loadPlaylistBtnActionPerformed(java.awt.event.ActionEvent evt) {                                                
    if (evt.getSource() == loadPlaylistBtn) {
        try {
            playlistTextArea.setText(null);
            FileReader fileReader = new FileReader("playlist.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            String inputFile = "";
            String textFieldReadable = bufferedReader.readLine();

            while (textFieldReadable != null) {
                inputFile += textFieldReadable + "\n";
                textFieldReadable = bufferedReader.readLine();
                trackNum.setText(inputFile);
                String[] loadPlaylist = trackNum.getText().split("\\n");
                for (int i = 0; i < loadPlaylist.length; ++i) {
                    String songName = LibraryData.getName(loadPlaylist[i]);
                    String songArtist = LibraryData.getArtist(loadPlaylist[i]);
                    playlistTextArea.append(songName + " - " + songArtist + "\n");
                }
            }
            fileReader.close();
        } catch (Exception e) {
            System.out.println("File not found.");
        }
    }
} 
和艺术家:

public static String getArtist(String key) {
    try {
        stmt = con.createStatement();
        ResultSet res = stmt.executeQuery("SELECT * FROM Library WHERE LibraryID = '" +     key + "'");
        if (res.next()) {
            return res.getString(3);
        } else {
            return null;
        }
    } catch (Exception e) {
        return null;
    }
}
有没有办法让它只输出一首与数字有关的歌曲,而不是重复自己

抱歉,如果这真的不清楚-我对Java还是相当陌生的


谢谢:)

假设PlayTextArea是您的问题测试框,问题似乎是:

playlistTextArea.append(songName + " - " + songArtist + "\n");

您一次读取一行文件,然后每次追加整个列表,这将导致模式1、1、2、1、2、3、1、2、3、4等。解决此问题的最简单方法是确保在for循环之前清除文本框(即移动到playtextarea.setText(null)下)。

!非常感谢!
playlistTextArea.append(songName + " - " + songArtist + "\n");