package stringdemo;
import java.util.Scanner;
/**
@author aple
*
*/
public class Test02 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入要验证的字符串:");
String str=scan.next();
for(int i=0;i<=str.length()/2;i++){
if(str.charAt(i)!=str.charAt(str.length())){
System.out.println("不是回文");
return;
}
}
System.out.println("不是回文");
}
}
输出结果:
请输入要验证的字符串:
121
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.String.charAt(Unknown Source)
at stringdemo.Test03.main(Test03.java:13)
str.charAt(str.length())这里的length是3,而索引是从0开始,输入的121的索引最大值为2,上面这段代码也有问题,可以参考下
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = scanner.nextInt();
String input = number + "";
StringBuilder stringBuilder = new StringBuilder(input);
stringBuilder.reverse();
int count = 0;
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) != stringBuilder.charAt(i)) {
System.out.println(input + "不是回文数");
break;
} else {
count++;
}
}
if (count == input.length()) {
System.out.println(input + "是回文数");
}
if条件错了,字符串的最大索引是str.length()-1,你直接写个str.charAt(str.length())肯定越界啊,而且你每次循环难道都是跟最后一个字符比较吗。。。
所以你的if条件应该写成if(str.charAt(i)!=str.charAt(str.length()-1-i))