【问题标题】:Using scanner to read integers from a file into an array使用扫描仪将整数从文件读入数组
【发布时间】:2011-09-06 02:45:23
【问题描述】:

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

它是这样写的:
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,或者你在访问列表“分数”中的值时遇到了另一个问题?
  • 我有一个 FileNotFoundException,所以我无法真正看到输出来确定我正在做的事情是否正确。我使用的是 blueJ,该文件与项目的 .java 文件位于同一目录中。

标签: java arraylist


【解决方案1】:

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

【讨论】:

  • 我实际上在这种情况下都尝试过 - Scanner sc = new Scanner(new FileReader("C:/Users/xxx/students.txt"));是现在的样子。还是不行。是否有更好的 IDE 来执行此操作?另外,编译后,我右键单击类并点击“void main(String[] args)”,然后我被带到一个窗口,上面写着“DescriptiveStats.main(带有 {} 的空白字段”然后点击 OK。然后我得到一个 FileNotFoundException
  • 我刚刚尝试过 BlueJ,我认为它也可以在这里工作。可能还有另一个编译问题。
  • 谢谢Yasin - 所以你能够从文件中读取?我想我可能只是错过了一些分钟。我现在正在下载 Eclipse。
  • 那么您找到解决方案了吗?还是有问题?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 其实和hasNext()一起工作,我觉得不是这个原因。
    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2013-12-04
    • 2016-03-02
    相关资源
    最近更新 更多