我搞不懂的是为什么输出代码显示索引越界:

package stringdemo;

import java.util.Scanner;

/**

  • 检测回文
  • 上海自来水来自上海
  • 山西运煤车煤运西山
  • 12345654321
  • @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))