java中字符串方法子字符串出错

时间:2018-05-28 06:29:21

标签: java string indexof

我在此代码中收到此错误。我该怎么办?

//错误

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1931)
at StringExample.main(StringExample.java:18) 

//代码

String s=sc.nextLine();
int first=s.indexOf("");
int second=s.lastIndexOf("");
String sur=s.substring(second+1);      //18 line
String middle=s.substring(first+1,second);
String firstname=s.substring(0,first);
System.out.println(sur+""+firstname+""+middle);

2 个答案:

答案 0 :(得分:0)

代码中second的值很可能是字符串的最后一个索引。对于hello world,它将是11。

现在,如果你增加该数字并将其用作字符串的第一个索引,则得到-1,因为你的起始索引大于字符串中的最后一个索引。

从逻辑上讲,它也没有意义。您尝试从实际字符串后面的字符串中获取子字符串。

查看您的示例,我认为您应该使用indexOf(" ")代替。它会为您提供空间索引。

答案 1 :(得分:0)

.indexOf("")方法让你开始你的字符串和.lastIndexOf("")给你结束你的字符串..我想你应该使用你的最后一个index方法(" .lastIndexOf("")),如.lastIndexOf("");.