我正在为学校做一份复习工作。赋值是编写一个类,它从标准输入读取一个包含几个整数的文件,这些整数将被放入一个数组中。从这里开始,需要编写方法来找出平均值,中位数,最大值,最小值和标准差。
它的内容如下:
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();
}
}
答案 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());
}
...