我对Java很新,但这让我在过去半小时左右难倒。我正在从文本文件中读取行并将它们存储为String Arrays。从这里开始,我尝试使用数组中的值来初始化我拥有的另一个类。要初始化我的Route类(因此使用routeName),我需要从数组中取第一个值并将其作为字符串传递。当我尝试为routeName返回s [0]时,我给出了我文本文件的最后一行。如何解决这个问题的任何想法将不胜感激。我仍处于测试过程中,这就是为什么我的代码几乎没有完成。
我的文本文件如下。
66
Uq Lakes,Southbank
1,2,3,4,5
2,3,4,5,6-
和我的代码:
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"));
while (timetable.hasNextLine()) {
String[] s = timetable.nextLine().split("\n");
routeName = s[0];
}
System.out.println(routeName);
}
}
答案 0 :(得分:1)
Scanner.nextLine()
返回一行,因此按“\n
”拆分始终会提供单个元素数组,例如:
timetable.nextLine().split("\n"); // e.g., "1,2,3,4,5" => ["1,2,3,4,5"]
请尝试使用“,
”进行拆分,例如:
timetable.nextLine().split(","); // e.g., "1,2,3,4,5" => ["1", "2", "3", "4", "5"]
注意:如果您打算让数组包含单独的行,请查看this SO post。
Scanner s = new Scanner(new File(filename));
List<String> lines = new ArrayList<String>(); // A List can be dynamically resized
while(s.hasNextLine()) lines.add(s.nextLine()); // Store each line in the list
String[] arr = lines.toArray(new String[0]); // If you really need an Array, use this
答案 1 :(得分:1)
您正在调用的方法 timetable.nextLine.split(“\ n”)将返回String数组。 所以每次调用这个方法时都会用文件中的新行覆盖你的数组,最后在你的数组中添加最后一行,你最后得到了lat行。 下面是您可以使用的代码。
public static void main(String[] args) throws FileNotFoundException {
String routeName = "";
Scanner timetable;
int count = 0;
String[] s = new String[10];
timetable = new Scanner(new File("fileName.txt"));
while (timetable.hasNextLine()) {
String line = timetable.nextLine();
s[count++] = line;
}
routeName = s[0];
System.out.println(routeName);
}
答案 2 :(得分:0)
你的while循环遍历所有行,并将当前行设置为routeName。这就是为什么你在你的字符串中的最后一行。当你阅读文件的第一行时,你可以做的就是休息。然后你将有第一行。