gpt4 book ai didi

java - 字符串索引越界异常

转载 作者:行者123 更新时间:2023-12-01 17:10:23 24 4
gpt4 key购买 nike

public static void main(String [] args) throws IOException{
BufferedReader in = new BufferedReader(new FileReader(".../senses/command_list"));
String line = null;

while((line = in.readLine()) != null){
if(line.isEmpty()){
continue;
}
line = line.trim();
line = line.substring(2 + line.indexOf(">") , line.indexOf("))"));
System.out.println(line);

}

以下是文件摘录

en_actions_.add(new ClusterEntry<String>("photography",-1, 2, 620554,"photography",null));
en_actions_.add(new ClusterEntry<String>("diagnostic procedure",-1, 1, 177127,"diagnostic procedure",null));
en_actions_.add(new ClusterEntry<String>("emergency procedure",-1, 1, 177783,"emergency procedure",null));
en_actions_.add(new ClusterEntry<String>("medical procedure",-1, 1, 1024392,"medical procedure",null));
en_actions_.add(new ClusterEntry<String>("process",-1, 5, 5470189,"process",null));

当我运行此程序时,遇到字符串越界异常,并显示以下错误消息

线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2
它指向带有indexOf运算符的行。

请让我知道我做错了什么。顺便说一句,该程序的目的是将每个字段存储在结构/类数组中。这只是该计划的第一部分。

最佳答案

嗯,我不知道你的文件有什么样的字符串(行),但你可能会得到一个长度为1的字符串,在这种情况下,下面的行会产生异常。

line = line.substring(2 + line.indexOf(">") , line.indexOf(")"));

此外,如果您的 String(line) 没有 ')',那么在这种情况下 line.indexOf(")") 将给出 -1,这是没有意义的。

此外,您自己尝试以下代码,将会重现与您的代码相同的异常。

String x = "a";
System.out.println(x.substring(2 + x.indexOf(">") , x.indexOf(")")));

在字符串 x 中,存储不包含“>”和“)”的任何字符串。

关于java - 字符串索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003464/

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