java - 使用扫描仪和方法从文件中读取

标签 java arrays file-io methods java.util.scanner

我在弄清楚如何使用扫描仪和方法读取文件时遇到了很大的麻烦。 这是我的大纲:

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class ReadFile1 {
    public static void main(String[] commandlineArgument) {
        Integer[] array = ReadFile1.readFileReturnIntegers(commandlineArgument[0]);
        ReadFile1.printArrayAndIntegerCount(array, commandlineArgument[0]);
    }

    public static Integer[] readFileReturnIntegers(String filename) {
        Integer[] array = new Integer[1000];
        //...?
        return array;
    }

    public static void printArrayAndIntegerCount(Integer[] array, String filename) {
        //...?
    }
}

我正在尝试读取并返回一个数组整数,其中包含输入文件中的所有且仅包含整数。 我对这些方法的工作原理感到非常困惑,并且不知道如何开始阅读。

示例输出:

    index = 0, element = 1877
    index = 1, element = 1879
    index = 2, element = 2000

最佳答案

您读过API-Docs吗?对于 java.util.Scanner 类?他们有一些简短的例子。我只是假设你的整数是由空格分隔的。我宁愿使用列表,因为您通常不知道文件中有多少个整数。如果您确实想要一个数组,可以稍后使用List.toArray()

还有一个问题,当您之前创建 Scanner 实例时,为什么要将文件名传递给读取函数?

public static Integer[] readFileReturnIntegers(Scanner sc) {
    List<Integer> list = new ArrayList<Integer>();
    while (sc.hasNextInt()) {
        list.add(sc.nextInt());
    }
    return list.toArray(new Integer[list.size()]);
}

为了输出数组,我只需使用java.io.PrintWriter。到目前为止,我的示例函数没有进行任何健全性检查,例如检查现有文件等。为了便于阅读,我使用了 Java7 try-with-resources Statement句法。如果您仍然使用 Java 6,则必须稍微重写一下 try/catch。请参阅this thread例如

public static void printArrayAndIntegerCount(Integer[] array, String filename) {
    try (PrintWriter pw = new PrintWriter(filename);) {
        pw.println("number of integers in file \"" + filename+ "\" = " + array.length);
        for (int i=0; i<array.length; i++) {
            pw.println("    index = " + i + "; element = " + array[i]);
        }
    }
    catch (Exception e) {
        //handle exceptions
    }
}

关于java - 使用扫描仪和方法从文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297862/

相关文章:

javascript - $(this).attr ('id' );不工作

java - 将字符附加到加载到内存中的文件的最快/最有效的方法是什么?

c++ - 为什么它只在第二次正确读取文件

ruby - 更快的 CSV + 试图找到独特的项目

java - 如何使用将来可以编辑的警报创建提醒

java - 在 java JNA 中用什么代替 LPTSTR?

python - 比较 numpy 数组中的相邻值

python - c malloc数组指针在cython中返回

java - 使用 Spring Data JPA 处理 POST 请求中的关系

java - 如何在 JPanel 上覆盖、调整大小和居中组件?