我有一个关于字符串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。为什么会这样?
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;
}
这是我解决这个问题的代码,很简单
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);
}
您在此处访问错误字符串的第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; 更改 至