gpt4 book ai didi

java - BufferedReader readLine 在遇到空字符串时停止读取

转载 作者:行者123 更新时间:2023-12-01 07:45:09 26 4
gpt4 key购买 nike

我正在使用 BufferedReader 逐行读取文本文件。然后我使用一种方法来标准化每行文本。但是我的规范化方法有问题,调用它后,BufferedReader 对象停止读取文件。有人可以帮我解决这个问题吗?

这是我的代码:

public static void main(String[] args) {
String string = "";

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {

string += normalize(line);

}
} catch (Exception e) {

}
System.out.println(string);
}

public static String normalize(String string) {

StringBuilder text = new StringBuilder(string.trim());



for(int i = 0; i < text.length(); i++) {
if(text.charAt(i) == ' ') {
removeWhiteSpaces(i + 1, text);
}
}

if(text.charAt(text.length() - 1) != '.') {
text.append('.');
}

text.append("\n");
return text.toString();
}

public static void removeWhiteSpaces(int index, StringBuilder text) {
int j = index;
while(text.charAt(j) == ' ') {
text.deleteCharAt(j);
}
}

这是我使用的文本文件:

abc .

asd.



dasd.

最佳答案

我认为您的 removeWhiteSpaces(i + 1, text); 有问题,如果您的字符串处理有问题,读者将无法阅读下一行。

你不检查空字符串,然后调用text.charAt(text.length()-1),这也是一个问题。

打印异常,更改 catch block 以写出异常:

} catch (Exception e) {
e.printStackTrace();
}

原因是在你的 while(text.charAt(j) == ' ') { 中,你没有检查 StringBuilder 的长度,而是删除了它......

关于java - BufferedReader readLine 在遇到空字符串时停止读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54629941/

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