当前位置: 首页 > 知识库问答 >
问题:

for循环中的Java字符串索引超出界限(codingbat函数mirrorEnds)

柴宏浚
2023-03-14

我有一个关于字符串3中codingbat的问题。问题如下:

给定一个字符串,在给定字符串的开头和结尾寻找镜像(向后)字符串。换句话说,在给定字符串的开头和字符串的末尾以相反的顺序(可能重叠)为零或多个字符。

例如,字符串“abXYZba”具有镜像结尾“ab”

mirrorEnds(“abXYZba”)→ “ab”

MirrorEnds("abca")→"a"

MirrorEnds("aba")→"aba"

我的代码如下:

public String mirrorEnds(String string) {

if(string.length() <=1) return string;  
String x = "";
int y = string.length() - 1;


for(int i = 0; i < string.length()/2; i++)
{ 
  if(string.charAt(i) == string.charAt(y))
  {
    x+= Character.toString(x.charAt(i)); 
    y--;
  }
  else
  {
    return x;
  }
  
}

return string;

}

当我尝试以下操作时:

“xxYxx”

字符串长度为5,因此索引从0-4。如果我在我的代码上运行它,逻辑将是:

    i = 0 and y = 4;

string.charAt(i) == string.charAt(y) //true and i++ and y--
string.charAt(i) == string.charAt(y) //true and i++ and y--
//i is == string.length()/2 at this point

但这个问题让我犯了一个错误,说indexoutofbounds。为什么会这样?

共有3个答案

姜智渊
2023-03-14
  public String mirrorEnds(String string) {

     String g="";

  for(int i=0;i<string.length();i++){
 if(string.charAt(i)==string.charAt(string.length()-1-i)){

  g=g+string.charAt(i);
      } else{

  break;
  }
 }
   return g;
  }
强安和
2023-03-14

这是我解决这个问题的代码,很简单

public String mirrorEnds(String string) {

  int start = 0;
  int end = string.length()-1;

  for(int i=0;i<string.length();i++){

    if(string.charAt(start) == string.charAt(end) ){
      start++;
      end--;
    }

    if(start != ((string.length()-1)-end)){
      break;
    }


  }

  return string.substring(0,start);


}
和柏
2023-03-14

您在此处访问错误字符串的第i个字符:

x += Character.toString(x.charAt(i));

字符串x首先为空,因此索引0处的字符不存在。

改为访问原始string

x += Character.toString(string.charAt(i));
 类似资料:
  • 为了准备即将到来的计算机科学测验,我正在试着做关于codingbat的题“plusOut”,但我有一些错误。 这就是问题所在:http://codingbat.com/prob/p170829 这是我尝试使用的解决方案/代码: 我得到的错误是"StringIndexOutOfBoundsExc0019"错误,表示"字符串索引超出范围:-1" 更新:我更改了我的代码,这样它就不会给我那个错误,但是现

  • 例:“at”和“tack”应该返回true,“tree”和“ere”应该返回false。 在查看注释后编辑,我的新代码现在是这样的。它总是返回false,即使带有“tree”和“tree”。

  • 问题内容: 我猜我正在收到此错误,因为字符串正在尝试对值进行子字符串化。但是那部分不能消除这个问题吗? 这是Java代码段: 我收到此错误: 问题答案: 我猜我正在收到此错误,因为字符串试图将Null值作为子字符串。但是“ .length()> 0”部分不能消除该问题吗? 不,在itemdescription为null时调用itemdescription.length()不会生成StringInd

  • 我的代码抛出了一个错误“字符串索引超出界限:1”,下面是代码: 分配指令是:“彩票程序生成一个介于01-99之间的两位数。如果用户以正确的顺序猜对了数字,他们将赢得1000美元。如果用户以错误的顺序猜对了数字,例如16而不是61,他们将赢得500美元。如果用户猜对了其中一个数字,他们将赢得100美元。” 当用户输入和/或randomNum为10或以上时,代码工作正常。然而,当它低于10时,发生错误

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至