我在弄清楚如何使用扫描仪和方法读取文件时遇到了很大的麻烦。 这是我的大纲:
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/