我在弄清楚如何使用扫描仪和方法读取文件时遇到了大麻烦。 这是我的概要:
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
答案 0 :(得分:1)
您是否阅读了java.util.Scanner
课程的API-Docs?他们有一些简短的例子。我只是假设你的整数是由空格分隔的。我宁愿使用Lists,因为您通常不知道文件中有多少整数。如果你真的想拥有一个数组,可以稍后使用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
}
}