gpt4 book ai didi

java - Java 子字符串错误索引越界

转载 作者:行者123 更新时间:2023-12-01 07:29:56 25 4
gpt4 key购买 nike

我决定编写自己的 subString 方法,但是当我在测试驱动程序中测试它时,我的 SubString 方法中的某一行收到错误。这是错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(Unknown Source)
at unisa.util.StringImproved.subString(StringImproved.java:618)

这是我的子字符串的代码:

    public String subString(int start, int end) {
//empty string to append the new string's characters to
String subString = "";
//creating a new string to store content to allow function
String s1 = new String(content);
//read each character in the string and append based on the index
for (int i=start; i<=end; i++){
subString += s1.charAt(i);
}
//convert string back to a char array
content = subString.toCharArray();
return subString;

}

错误是选取了行 subString += s1.charAt(i);任何人都能够阐明我做错了什么??

PS。这不是为了作业,只是有点无聊,想自己重新创建 java 函数。

提前致谢!!

我已根据要求添加了我的测试方法!!

private int testSubString(String testID) {
int errorCount=0;



header(testID);

{
System.out.println("Test[getting substring from middle] ");
StringImproved str = new StringImproved("0123456789");
String result = str.subString(1,2);
errorCount+=handleResult(result,"1")?0:1;
}

{
System.out.println("Test[getting first characters] ");
StringImproved str = new StringImproved("0123456789");
String result = str.subString(0,2);
errorCount+=handleResult(result,"01")?0:1;
}

{
System.out.println("Test[getting last characters] ");
StringImproved str = new StringImproved("0123456789");
String result = str.subString(str.length()-3,str.length());
errorCount+=handleResult(result,"789")?0:1;
}


{
System.out.println("Test[out of range] ");
StringImproved str = new StringImproved("0123456789");
String result = str.subString(0,str.length()+1);
errorCount+=handleResult(result,null)?0:1;
}

{
System.out.println("Test[zero length source] ");
StringImproved str = new StringImproved("");
String result = str.subString(0,str.length()-1);
errorCount+=handleResult(result,null)?0:1;
}
return errorCount;
}

最佳答案

数组从零开始

如果您的字符串长度为 N,则索引从 0N - 1(N< 的总长度)。

你的for循环应该是:

                   ↓‎
for (int i=start; i<end; i++) {

示例:

“这是一个测试” 的大小为 14T 位于 0 位置,最后一个t13地点。

<小时/>

正如@sanbhat提到的,你需要检查一些情况,例如,如果content的大小小于end会发生什么?

关于java - Java 子字符串错误索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18942627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com