使用scanner将文件中的整数读入数组

时间:2011-09-06 02:45:23

标签: java arraylist

我正在为学校做一份复习工作。赋值是编写一个类,它从标准输入读取一个包含几个整数的文件,这些整数将被放入一个数组中。从这里开始,需要编写方法来找出平均值,中位数,最大值,最小值和标准差。

它的内容如下:
45
56
67
78
89 等...

所以,我假设我需要创建一个数组列表(因为长度未定义)并使用scanner读取每一行的整数,然后创建将挑选我需要的方法。 但是,我无法理解如何正确使用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();
        }

    }

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

System.out.println(new File("students.txt").getAbsolutePath());将为您提供java尝试加载文件的路径。

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

答案 2 :(得分:0)

使用Scanner.hasNextInt()(而不是Scanner.hasNext()):

...
while(sc.hasNextInt())
{
    scores.add(sc.nextInt());
}
...