gpt4 book ai didi

java - 有人可以帮助我让缓冲阅读器在 Java 中工作吗?

转载 作者:行者123 更新时间:2023-12-01 13:11:21 24 4
gpt4 key购买 nike

这里我试图阅读一份包含单词和相应缩写的文档。例如。

one,1
two,2
easy,ez

每一行都是分隔的,单词和缩写之间用逗号分隔。

<小时/>

当我希望缓冲读取器继续使用

读取行时
while ((line = br.readLine()) != null)

不会的。它只会读取第一行。这意味着它将显示 1 的缩写,即 1。但是如果我输入另一个值(例如 2),我会收到此错误消息。

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
at java.lang.String.charAt(String.java:658)
at shortener.NewClass.Short(NewClass.java:41)
at shortener.NewClass.main(NewClass.java:26)
Java Result:
<小时/>

这是代码

public static String Short(String input) {

try {
FileReader fr = new FileReader("abbreviations.txt");
BufferedReader br = new BufferedReader(fr);

String line;
while ((line = br.readLine()) != null) {

for(int i = 0; i <= line.length(); i++) {
if(line.charAt(i) == ','){
String strOrig = line.substring(0, i);
if(strOrig.equals(input)) {
String strAbv = line.substring(line.length()-1);
return strAbv;
}
}
}
}
br.close();
} catch (IOException e) {
out.println("File Not found");
}
return null;
}

最佳答案

这是不正确的:

for(int i = 0; i <= line.length(); i++) {

因为它访问的次数太多了。更正:

for(int i = 0; i < line.length(); i++) {

请注意,如果找到缩写,发布的代码不会 close() 阅读器。使用finally block 或 try-with-resources随后读者的声明已关闭。

其他:

  • String.split()可用于将行分成两个标记,而不是显式编码分隔。
  • A Properties样式文件可用于存储缩写到术语的映射,而不是逗号分隔的文件。 Properties 类提供了加载文件的机制和搜索 map 的方法:

       // If the 'abbreviations.txt' file is not updated
    // by the program then arrange for it to be loaded once.
    //
    try (final FileInputStream is =
    new FileInputStream("abbreviations.txt"))
    {
    final Properties p = new Properties();
    p.load(is);
    return p.getProperty(input);
    }

关于java - 有人可以帮助我让缓冲阅读器在 Java 中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840689/

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