所以基本上,用户输入 2 个字符串 ( CATSATONTHEMAT AT ),我们需要计算第二个字符串在第一个字符串中出现的次数(所以这里的答案是 3 )
这就是我到目前为止所拥有的,而且它一直在说
“线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:81223
在 java.lang.String.substring(来源未知)
在practice.main(practice.java:60)”
任何帮助,将不胜感激!我只是看不到我错在哪里
String s = scan.next(); // CATSATONTHEMAT
String t = scan.next(); // AT
int j= 0;
for ( int i = 0 ; i < s.length(); i++){
int k = t.length();
String newstring = s.substring(i,i+k); // I printed this and the substring works so the if statement might not be working..
if(newstring.equals(t))
j++; // if the new substring equal "AT" then add 1
}
System.out.printf("%d", j); // suppose to print just 3
当 i 接近 s 的末尾并且 k 使您通过了字符串的末尾时,会发生 outOfBounds 异常。
您需要将循环更改为仅达到 s.length()-t.length()
for ( int i = 0 ; i < s.length()-t.length(); i++){
我还建议将 int k = t.length() 从 for 循环中取出。您不需要每次迭代都分配该值,因为每次迭代都应该相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)