永发信息网

写了个小java程序 是用来确定输入的是不是回文序列的,可是出错了 不知道错在哪

答案:2  悬赏:30  手机版
解决时间 2021-03-02 08:22
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是我输入的字符串长度
最佳答案
下标越界了。
while((str.charAt(i) == str.charAt(j)) && (i != j) && (i !=(j-1)))
{
i++;
j++;
}
你这个循环是头和尾开始往中间循环比较,为什么是j++?应该是j--才对啊!j本来就是字符串最后一位,再++肯定越界啦!
全部回答
string src = "abc"; string value = new stringbuffer(src).reverse().tostring();
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
reeze英语单词是什么意思
【小题1】It is easy to protect the planet!
宇光电脑我想知道这个在什么地方
打架致轻伤二级构成什么罪,怎么赔偿我
cos people got their money handy这句话怎么
依托咪酯()
QQ水浒是免费游戏吗??
十堰市太和医院有小儿外科吗
开县庆丰塑胶制品厂这个地址在什么地方,我要
热水器能走明管吗
请问车牌的标志就是个R的是什么车
3x平方-x平方
山海关宾舍(西门)在哪里啊,我有事要去这个地
清远市清城区平安街医灵庙什么时候拆迁?
丹江口水库水域面积为840平方千米,蓄水总量
推荐资讯
请问大侠们,这两只鸽子是什么鸽子?公鸽子还
螺栓拧紧过程中的应力影响是指什么
我有个同学很脏,经常来我们宿舍,还不自觉,
q420是什么材质
发动机润滑清洗,有没有必要做
日语的"加油"怎么说啊?
杭州拎包客怎么样
给异性朋友他发消息,要不很晚在回要么不会,都
图为某代表团的亚、欧、非考察路线图和活动区
福忠堂药房在哪里啊,我有事要去这个地方
贵宏电器批发公司这个地址在什么地方,我要处
诺琴全自动手表放置一小时后指针停止是什么原
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?