gpt4 book ai didi

java - 从 java 中的行读取字符串 - StringIndexOutOfBoundsException : String index out of range

转载 作者:太空宇宙 更新时间:2023-11-04 14:11:21 25 4
gpt4 key购买 nike

我想从我的文本文件中获取一个单词(艺术家的名字在“|”和“:”之间),在输出中我得到了我想要的,但还有一个:

"Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -3..."

这是我的代码:

public class MyMainClass {
public static void main(String args[]) throws IOException {
try {
Scanner console = new Scanner(System.in);
System.out.print("Enter nr : ");
String nr = console.nextLine();
File originalFile = new File("albums.txt");
BufferedReader br;
br = new BufferedReader(new FileReader(originalFile));
String line;

while ((line = br.readLine()) != null) {
if (line.contains(nr)) {
String artysta = line.substring(line.indexOf("|") +1, line.indexOf(":"));
System.out.println("artysta: " + artysta);
}
}
br.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(MyMainClass.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MyMainClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

我有正确的输出结果,以及(artysta)的名字,还有这个:

"Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -3 at java.lang.String.substring(String.java:1954) at MyMainClass.MyMainClass.main(MyMainClass.java:38) Java Result: 1"

这是我的文件中的字符串示例。每个数字1|依此类推开始一个新行。

1|Deerhunter:Microcastle||49,99|||95 
2|John Lennon:Imagine||59,99|||50
3|The Cure:Faith||40,00|||80

知道如何消除此错误吗?

最佳答案

您无法确定当您在代码中使用 +1 时,这是否在字符串长度范围内,因此您首先需要检查:

if ((line.indexOf("|") +1) < line.length() ){
.
.
}

关于java - 从 java 中的行读取字符串 - StringIndexOutOfBoundsException : String index out of range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288221/

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