我正在尝试将我的数组大小基于从文本文件中读取的行数,该文件具有未知的行数。我试过两次读取文件,第一次使用while循环并递增一个int然后将其用于数组大小,但这似乎不起作用。然后我尝试将行的值放入列表中并获取列表大小,但这也无效。任何帮助都会很棒。
第一次使用int来递增。我没有得到任何回报。
import java.io.*;
import java.util.*;
public class Scan {
public static void main(String args[]) throws IOException {
String routeName = " ";
String stationName = " ";
Scanner timetable = new Scanner(new File("fileName.txt"));
int i = 0;
while(timetable.hasNext()){
i++;
}
int count = 0;
String [] s = new String[i];
while (timetable.hasNext()) {
String line = timetable.nextLine();
s[count++] = line;
}
routeName = s[0];
stationName = s[1];
System.out.println(routeName.toString());
System.out.println(stationName.toString());
}
}
第二次使用列表。我得到一个NullPointerException。
import java.io.*;
import java.util.*;
public class Scan {
public static void main(String args[]) throws IOException {
String routeName = " ";
String stationName = " ";
Scanner timetable = new Scanner(new File("fileName.txt"));
List<String> list = new ArrayList<String>();
while(timetable.hasNext()){
list.add(timetable.next);
}
int i = list.size();
int count = 0;
String [] s = new String[i];
while (timetable.hasNext()) {
String line = timetable.nextLine();
s[count++] = line;
}
routeName = s[0];
stationName = s[1];
System.out.println(routeName.toString());
System.out.println(stationName.toString());
}
}
答案 0 :(得分:0)
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class ReadFile {
public static void main(String[] args) {
String fileName = "path";
try {
List<String> lines = Files.readAllLines(Paths.get(fileName),
Charset.defaultCharset());
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
虽然它不是数组,但它将存储在List中。但是会为你的目的而努力。请注意,它适用于java 7。
答案 1 :(得分:0)
如上所述,最好使用List。但除此之外,您的代码中还有一个错误。您必须在第二个while语句之前再次重置时间表变量。
希望这有帮助。