我正在尝试做这个程序
int contains(String s1,String s2):接收两个字符串,和 检查s2是否在s1情况下敏感。如果s2在s1中,则返回最后一次出现的s2的索引,否则返回-1。
这是一个例子
Filter(function(x) nrow(x)>5, mylst)
我写了代码,但给了我一个错误
Enter first string: O pikap, su pikap, bu pikap.
Enter second string: pikap
22
Enter first string: O pikap, su pikap, bu pikap.
Enter second string: pikapcik
-1
为什么会出现这样的错误,我该如何解决? 我只允许使用charAt和长度方法
这是代码
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(Unknown Source)
at Test.main(Test.java:12)**
答案 0 :(得分:0)
因为在每个递减的循环中它对整个字符的增加,然后发生StringIndexOutOfBoundsException异常 检查b--和b ++条件如下:
for( ; b>0 ; b--){
b = b - a;
for(int n = 0; n < a ; n++ , b++){
sum+= b1.charAt(b);
}
if(sum == a1)
break; }//for 1
答案 1 :(得分:0)
嗯..在开始自定义对象之前阅读String对象上的文档。
String b1 = "O pikap, su pikap, bu pikap";
String a1 = "pikap";
System.out.println( b1.lastIndexOf(a1) );
如果你需要知道它是如何工作的
答案 2 :(得分:0)
如果int b小于int a,则应该停止循环。当int b在第一个循环中减少到4时,操作的结果b = b-a;表示b = -1,在第二个循环中它检查b1.charAt(-1)并且没有-1。字符串b1的索引。顺便说一句,你可以简单地使用str.lastIndexOf()。