Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使字符串包含方法_Java_String_Methods - Fatal编程技术网

Java 使字符串包含方法

Java 使字符串包含方法,java,string,methods,Java,String,Methods,我想做这个节目 int contains(字符串s1,字符串s2):接收两个字符串,并且 检查s2是否在s1情况下敏感。如果s2在s1中,则返回s2最后一次出现的索引,否则返回-1 这里有一个例子 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: pi

我想做这个节目

int contains(字符串s1,字符串s2):接收两个字符串,并且 检查s2是否在s1情况下敏感。如果s2在s1中,则返回s2最后一次出现的索引,否则返回-1

这里有一个例子

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
我已经写了代码,但给了我这样一个错误

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)**
为什么会出现这样的错误,我该如何修复? Im只允许使用字符和长度方法

这是密码

public static void main(String[] args){
    String b1 = "O pikap, su pikap, bu pikap";
    String a1 = "pikap";
    String sum = "";
    int b =b1.length();
    int a =a1.length();
    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
    System.out.println(b-a+1);
}
publicstaticvoidmain(字符串[]args){
字符串b1=“O pikap,su pikap,bu pikap”;
字符串a1=“pikap”;
字符串sum=“”;
intb=b1.length();
int a=a1.length();
对于(;b>0;b--){
b=b-a;
对于(int n=0;n
因为循环中的每一次递减都会增加整个字符,然后会发生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
(;b>0;b--)的
{
b=b-a;
对于(int n=0;n
Uhm。。在开始自定义对象之前,先读取字符串对象上的文档

    String b1 = "O pikap, su pikap, bu pikap";
    String a1 = "pikap";
    System.out.println( b1.lastIndexOf(a1)  );
如果你需要知道它是如何工作的


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

您可以通过不执行
b1.charAt(-1)来解决此问题
。家庭作业警报。请尝试查找或查看此网站上的其他数百个副本中的任何一个。还要注意,必须检查字符串是否与
等于
=
相等。我不允许使用MethodOf索引。您在问题中没有提到,更新您的问题,说明您所面临的限制。