import acm.program.*;
public class palindrome extends ConsoleProgram {
private static final long serialVersionUID = 5727023577974422155L;
private String str;
private void getString(){
setFont("Times New Roman-30");
print("Please input the string you want for checking:");
str = readLine();
}
public void run(){
getString();
while(true){
checkForPalindrome();
getString();
}
}
private boolean checkForPalindrome(){
int i = 0 ;
int j = str.length() - 1;
while((str.charAt(i) == str.charAt(j)) && (i != j) && (i !=(j-1)))
{
i++;
j++;
}
if((i == j) || (i == (j-1))){
println("Holy Match!");
return true;
}
else
println("Wrong begin at the "+ (i+1) + " number");
return false;
}
}
貌似报错是 while((str.charAt(i) == str.charAt(j)) && (i != j) && (i !=(j-1)))这一行
而且总是这个错误java.lang.StringIndexOutOfBoundsException: String index out of range:X X是我输入的字符串长度
写了个小java程序 是用来确定输入的是不是回文序列的,可是出错了 不知道错在哪
答案:2 悬赏:30 手机版
解决时间 2021-03-02 08:22
- 提问者网友:献世佛
- 2021-03-01 11:58
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-03-01 12:20
下标越界了。
while((str.charAt(i) == str.charAt(j)) && (i != j) && (i !=(j-1)))
{
i++;
j++;
}
你这个循环是头和尾开始往中间循环比较,为什么是j++?应该是j--才对啊!j本来就是字符串最后一位,再++肯定越界啦!
while((str.charAt(i) == str.charAt(j)) && (i != j) && (i !=(j-1)))
{
i++;
j++;
}
你这个循环是头和尾开始往中间循环比较,为什么是j++?应该是j--才对啊!j本来就是字符串最后一位,再++肯定越界啦!
全部回答
- 1楼网友:狂恋
- 2021-03-01 13:32
string src = "abc";
string value = new stringbuffer(src).reverse().tostring();
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯