我想从文本文件中得到一个单词(“ |”和“:”之间的艺术家的名字),并在输出中得到我想要的东西,而且还有:
“线程“主”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-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() ){
.
.
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句