我试图将我的数组大小基于从文本文件中读取的行数,该文件具有未知的行数。我试图读取文件两次,第一次通过一个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());
}
}
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。但除此之外,你的代码中还有一个bug。必须在第二个while语句之前重新设置时间表变量。