使字符串包含方法

时间:2016-11-18 12:38:15

标签: java string methods

我正在尝试做这个程序

  

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)**

3 个答案:

答案 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)  );

如果你需要知道它是如何工作的

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.lastIndexOf%28char%5B%5D%2Cint%2Cint%2Cchar%5B%5D%2Cint%2Cint%2Cint%29

答案 2 :(得分:0)

如果int b小于int a,则应该停止循环。当int b在第一个循环中减少到4时,操作的结果b = b-a;表示b = -1,在第二个循环中它检查b1.charAt(-1)并且没有-1。字符串b1的索引。顺便说一句,你可以简单地使用str.lastIndexOf()。