【发布时间】:2021-05-26 22:22:10
【问题描述】:
我正在尝试使用 Scanner 读取文本文件并将文本拆分为 Space 并将其存储在数组中,但它不会读取整个文本,但实际上会读取最后两行。 我正在尝试阅读这些行:
学生 [姓名= Uzair Siddiqui,卷号 = 1234 地址= 卡拉奇,电话号码= 03312345,专业= cs 课程= [DM,OOP],GPA= 3.8]
学生 [name= Zaid Haris,卷号 = 2323 地址= kaaaa,phoneNumber= 01315121,专业= dm Courses= [JAVA, CAL],GPA= 3.8]
我在“”处拆分数据并将其存储在一个字符串数组中,但它只存储最后一行,即
学生 [姓名= Zaid Haris,卷号 = 2323 地址= kaaaa,电话号码= 01315121,专业= dm 课程= [JAVA,CAL],GPA= 3.8]
我的代码是
String [] strArr=new String[500];
try {
FileInputStream myObj = new FileInputStream("allStudents.txt");
Scanner myReader = new Scanner(myObj);
while (myReader.hasNextLine()) {
String data = myReader.nextLine();
strArr=data.split(" ");
}
myReader.close();
} catch (Exception e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
尽快寻找答案。谢谢!
【问题讨论】:
-
输入的格式是什么?每个学生都在新线上吗?举例说明您的理想结果是什么
-
strArr =显然并不意味着“追加”,这是对=可能做的事情的一种相当奇怪的解释。不要使用数组,那不是它们的用途。使用List<String>。list.addAll(data.split(" "));将是一个不错的开始。您还需要在此处应用 try-with-resources,这是在 java 中读取文件的一种非常过时的方式。如果文件的编码不正确,它也会失败,因为您没有指定它。 -
@StarshipladDev 我想通过在空格处拆分来将所有文件文本存储在一个数组中,但它只存储最后几行。
-
@rzwitserloot 感谢您的帮助。我会试试的。
-
您好 Uzair,考虑一下:您正在将 strArr 变量初始化为固定长度的列表。但是,您并没有使用刚刚分配的空间:strArr 设置为等于 data.split,这是您读取的最后一行。在每次迭代中,您只需将读取的最后一行存储到 strArr 变量中。
标签: java inputstream filereader file-handling readfile