我一直得到java.lang.StringIndexOutOfBoundsException
我试图让用户插入至少3个字符的字符串,如果是偶数,程序将打印前半部分,如果是奇数,程序将打印中间的3个字符。当我输入超过3个字符时,我一直收到这个错误我一直得到java.lang.StringIndexOutOfBoundsException,java,Java,我试图让用户插入至少3个字符的字符串,如果是偶数,程序将打印前半部分,如果是奇数,程序将打印中间的3个字符。当我输入超过3个字符时,我一直收到这个错误 import java.util.Scanner; public class Stringex { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Please enter a string a
import java.util.Scanner;
public class Stringex {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Please enter a string at least 3 characters long ");
String a = input.nextLine();
int numberofletters = a.length();
if (numberofletters < 3) {
System.out.print("Sorry the string you entered is not long enough");
}
else if (numberofletters%2 == 0) {
System.out.print(a.substring(0, numberofletters/2));
}
else {
System.out.print(a.substring(numberofletters/2 - 1, numberofletters +2 ));
}
}
import java.util.Scanner;
公共级Stringex{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“请输入至少3个字符长的字符串”);
字符串a=input.nextLine();
int numberofletters=a.length();
如果(字母数<3){
System.out.print(“对不起,您输入的字符串不够长”);
}
else if(numberofletters%2==0){
系统输出打印(a.子字符串(0,numberofletters/2));
}
否则{
系统输出打印(a.子字符串(numberofletters/2-1,numberofletters+2));
}
}
}如评论中所述,您的问题在于此声明:
else {
System.out.print(a.substring(numberofletters/2 - 1, numberofletters +2 ));
}
查看文档,您可以看到问题在于您传递的endIndex。由于numberofletters
指的是字符串的长度,因此向其中添加2将始终索引到字符串的末尾
该文档还帮助说明了子字符串可以抛出哪些异常以及在什么情况下:
抛出:
IndexOutOfBoundsException-如果beginIndex为负值,或者endIndex大于此字符串对象的长度,或者beginIndex大于endIndex
[Emphasis mine]如评论中所述,您的问题在于此声明:
else {
System.out.print(a.substring(numberofletters/2 - 1, numberofletters +2 ));
}
查看文档,您可以看到问题在于您传递的endIndex。由于numberofletters
指的是字符串的长度,因此向其中添加2将始终索引到字符串的末尾
该文档还帮助说明了子字符串可以抛出哪些异常以及在什么情况下:
抛出:
IndexOutOfBoundsException-如果beginIndex为负值,或者endIndex大于此字符串对象的长度,或者beginIndex大于endIndex
[Emphasis mine]最后一个else语句就是导致问题的语句。您可能需要查看“numberofletters+2”部分。下次请添加完整的错误描述。特别是抛出它的那一行会有帮助,谢谢:)最后一个else语句就是导致问题的语句。您可能需要查看“numberofletters+2”部分。下次请添加完整的错误描述。特别是它被抛出的那一行会很有帮助,谢谢:)