运行时错误: 线程“main”中的运行时ErrorException java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 at java.lang.String.charAt(String.java:658) 在GFG.main(File.java:32)
print = console.log;
strs = `[10.5] : [G D/F#]
[21.5] : [D F G] => It's too late
[26.5] : [D Em A] => It's now done`.split('\n')
for(str in strs){
str = strs[str]
str = str.split(':')[1];
str = str.trim();
var reg = /\[(.*)\]/i
print(reg.exec(str)[1])
}
答案 0 :(得分:0)
它在字符串中调用一个与str.charAt(i-1)
方法调用似乎不存在的位置。当i == 0或i == str.length-1并调用charAt(i + 1)时。您始终可以通过IDE设置断点并调试应用程序。
异常也告诉你它的位置:GFG.main(File.java:32)即32行 哪个是原始文件中包含所有导入,注释和包名称的行?
答案 1 :(得分:0)
问题在于您的PropertyNameChanged
类方法。如果您想在Scanner
之后使用nextLine
,则必须在代码中触发一个空白换行符,例如
nextInt
然后扫描仪将扫描您的sc.nextLine();
。
来到你的例外,当扫描仪接受输入时,它会像“”一样空白字符串,所以当你试图找到chatAt(0)时,它会试图超过空字符串中的值。 / p>
请将以下代码放入您的程序中,
String str=sc.nextLine();
有关更多信息,请参阅此链接Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo()?