使用扫描器从文件中读取整数并存入数组

4

我正在为学校做一项评论作业。这个任务是写一个类,从标准输入读取一个包含多个整数的文件,并将它们放入一个数组中。然后需要编写方法来查找平均值、中位数、最大值、最小值和标准差。

文件内容如下:
45
56
67
78
89 等等...

因此,我认为我需要创建一个数组列表(因为长度未知),并使用扫描器读取每一行的整数,然后创建所需的方法。 然而,我不明白如何正确地在FileReader和Scanner之间使用。 我目前正在运行BlueJ。文本文件位于项目文件夹下,但代码无法找到该文件。

以下是我目前的进展。

import java.io.*;
import java.util.*;
import java.math.*;
public class DescriptiveStats
{
    public DescriptiveStats(){}
    public FileReader file = new FileReader("students.txt");

    public static void main(String[] args) throws IOException
    {
        try{
            List<Integer> scores = new ArrayList<Integer>();
            Scanner sc = new Scanner(file);
            while(sc.hasNext())
            {
                scores.add(sc.nextInt());
            }
            sc.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }

你的代码在我这里运行良好。你是指你遇到了FileNotFoundException,还是在访问列表“scores”中的值时遇到了其他问题? - Yasin Okumuş
我遇到了FileNotFoundException,所以我无法查看输出以确定我的操作是否正确。我正在使用BlueJ,文件位于与项目的.java文件相同的目录中。 - tapedeckghost
3个回答

2

请确保“students.txt”与您运行代码的目录位于同一目录中(例如,您的 .java 文件编译到哪里),或者将文件的完整路径放入其中。即(“C:/folder/students.txt”)


我实际上在这种情况下尝试过两种方法- Scanner sc = new Scanner(new FileReader("C:/Users/xxx/students.txt")); 目前是这样的。 还是不行。有更好的IDE来做这个吗? 此外,在编译后,我右键单击类并点击“void main(String [] args)”,然后会进入一个窗口,窗口上会读取“DescriptiveStats.main(空白字段{})”,然后单击确定。 然后我得到了FileNotFoundException - tapedeckghost
我刚刚在BlueJ上尝试了一下,我觉得它也可以在这里工作。可能还有另一个编译问题。 - Yasin Okumuş
谢谢Yasin - 所以你能够从文件中读取吗?我想我可能只是错过了一些微小的东西。我正在下载Eclipse。 - tapedeckghost
你解决了吗?还是有问题? - Yasin Okumuş

1

System.out.println(new File("students.txt").getAbsolutePath());会给你Java尝试加载文件的路径。

我怀疑这是由于类路径中存在多个路径引起的歧义,第一个条目是从其加载的路径。将文件加载路径设置为第一个条目应该可以解决问题。


0

实际上它使用hasNext()函数是可以工作的,我不认为这是原因。 - Yasin Okumuş

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接