gpt4 book ai didi

java - 如何拆分文件中的字符串并读取它们?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:33 27 4
gpt4 key购买 nike

我有一个包含信息的文件。看起来像:

    Michael 19 180 Miami
George 25 176 Washington
William 43 188 Seattle

我想拆分行和字符串并读取它们。我希望它看起来像:

    Michael
19
180
Miami
George
...

我使用了这样的代码:

    BufferedReader in = null;
String read;
int linenum;
try{
in = new BufferedReader(new FileReader("fileeditor.txt"));
}
catch (FileNotFoundException e) {System.out.println("There was a problem: " + e);}
try{
for (linenum = 0; linenum<100; linenum++){
read = in.readLine();
if(read == null){}
else{
String[] splited = read.split("\\s+");
System.out.println(splited[linenum]);
}
}
}
catch (IOException e) {System.out.println("There was a problem: " + e);}
}

这给我的是

    Michael
25
188

我认为这可能是我的 for 循环的问题,但我的编程水平不是很高,我将不胜感激。谢谢。

最佳答案

你已经完成了,这很棒。

读取文件时,Reader 将在到达流末尾时返回 null,这意味着没有其他内容可供读取。您当前的方法意味着您想要阅读至少 100 行,但不会更多……如果您的文件大小增加,这将在未来成为问题……这也有点浪费

相反,我们应该使用一个 null 值表示文件结尾的事实。

当你分割一条线时,它会包含一些元素。您正在使用 linenum 变量来打印这些。问题是,您已经阅读并拆分了该行,linenum 与此任务无关,因为它代表您已经阅读的行数,而不是您要阅读的字符串部分我们刚刚分手。

相反,您需要使用内部循环来显示每行的各个拆分元素...

例如……

BufferedReader in = null;
try {
in = new BufferedReader(new FileReader("fileeditor.txt"));
String read = null;
while ((read = in.readLine()) != null) {
String[] splited = read.split("\\s+");
for (String part : splited) {
System.out.println(part);
}
}
} catch (IOException e) {
System.out.println("There was a problem: " + e);
e.printStackTrace();
} finally {
try {
in.close();
} catch (Exception e) {
}
}

另外,别忘了,如果你打开它,你必须关闭它 ;)

您可能需要多花点时间浏览 Basic I/O还有 ;)

关于java - 如何拆分文件中的字符串并读取它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18607418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com