从java中的文本文件中列出一个列表?

Ben*_*sen 11 java list text-files

我有一个充满数字的文本文件,我想将数字读入Java,然后制作一个我可以排序的列表.自从我使用java以来​​已经有一段时间了,我忘记了如何做到这一点.

文本文件看起来像这样

4.5234  
9.3564
1.2342
4.4674
9.6545
6.7856
Run Code Online (Sandbox Code Playgroud)

Col*_*ert 10

您可以使用Scanneron File并使用nextDouble()nextFloat()方法.

Scanner scanner = new Scanner(new File("pathToYourFile"));
List<Double> doubles = new ArrayList<Double>();
while(scanner.hasNextDouble()){
    doubles.add(scanner.nextDouble());
}
Collections.sort(doubles);
Run Code Online (Sandbox Code Playgroud)

资源:

  • @DerMike,你是对的;)最后是一个列表,但是一个集合无法排序,我将编辑代码. (2认同)

Oct*_*ean 3

你做这样的事情。

编辑:我尝试实现 dbkk 在他的评论中提到的更改,因此代码实际上是正确的。告诉我我是否有什么问题。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ReadList {

    public static void main(String[] args) throws IOException {

        BufferedReader in = null;
        FileReader fr = null;
        List<Double> list = new ArrayList<Double>();

        try {
            fr = new FileReader("list.txt");
            in = new BufferedReader(fr);
            String str;
            while ((str = in.readLine()) != null) {
                list.add(Double.parseDouble(str));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            in.close();
            fr.close();
        }

        for (double d : list) System.out.println(d);
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 输入流确实应该在“finally {}”中关闭 (5认同)
  • @奥克塔维恩。关闭 BufferedReader,但不关闭 FileReader。没有在“finally”块中关闭。无意义的 catch 块:(A) 无论如何您都会看到 IOException,并且 (B) 您更有可能从解析中获得异常,而不是从 I/O 中获得异常(并且应该在 while 循环内捕获该异常)。为什么不使用 for (double d : list) System.out.println(d)`?顺便说一句,Stack Overflow 的目的是学习,而不是追求声誉。 (2认同)
  • @dbkk:我现在明白了。那么在这种情况下你是对的。相信我,我的代表。对我来说并不重要,这也不是我回复你的目的。我想在关闭 BufferedReader 时关闭 FileReader。我想我已经吸取了教训。也许下次你可以发布更深入的解释肯定会对我有帮助。谢谢。 (2认同)