我正在尝试读取文件。有问题的文件有两个字符串,一个在其自己的行上,如下所示:
COMETQ
HVNGAT
我正在尝试将每个字符串分配给其自己的String变量。但是,当我运行下面的代码时,第二个.nextToken()会出现NoSuchElementException。
BufferedReader f = new BufferedReader(new FileReader("ride.in"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("ride.out")));
StringTokenizer st = new StringTokenizer(f.readLine());
String comet = st.nextToken();
String group = st.nextToken();
有人可以帮助我找出问题所在吗?谢谢!
注意:这是USACO培训页面的问题。我只是想寻求帮助来调试文件读取,而不是解决问题。
答案 0 :(得分:0)
您只给了它一行:
new StringTokenizer(f.readLine());
您必须首先从文件中读取所有行,然后将结果字符串传递给构造函数。
注意:在这种情况下,您甚至不必使用StringTokenizer
。只需使用BufferedReader
答案 1 :(得分:0)
StringTokenizer。您还可以使用split()方法。
语法:
StringTokenizer stringTokenizer = new StringTokenizer(text, delimiter);
例如:
StringTokenizer stringTokenizer = new StringTokenizer("abc, def", ",");
但是在您的文件中,字符串中没有这样的分隔符。因此,StringTokenizer
在这里没有用。
我已经对此进行了测试:
BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("F:/test.txt")));
String line;
String extracted = "";
while ((line = bufferedReader.readLine()) != null) {
StringTokenizer stringTokenizer = new StringTokenizer(line);
while (stringTokenizer.hasMoreElements()) {
extracted = extracted + stringTokenizer.nextElement().toString() +",";
}
}
bufferedReader.close();
String[] splits = extracted.split(",");
String comet = splits[0];
String group = splits[1];
System.out.println(comet + " " + group);
输出:
COMETQ HVNGAT
希望这对您有所帮助:)