Java 我正在编写一个代码来检测字符串中是否有重复的字符,但每当我尝试运行它时,就会出现运行时错误

Java 我正在编写一个代码来检测字符串中是否有重复的字符,但每当我尝试运行它时,就会出现运行时错误,java,exception,runtime-error,Java,Exception,Runtime Error,代码如下所示: 公共静态无效字符串[]args { 错误是这样的: 主线程java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:5 java:658 在numstuff.mainnumstuff.java:23中,java使用0-index.name[2]引用name中的第三个字符。name.length不是name中的有效索引。请改用name.length-1。两个循环都使用范围1..length,但Java的大多数索引都是从0开始的

代码如下所示:

公共静态无效字符串[]args {

错误是这样的:

主线程java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:5 java:658 在numstuff.mainnumstuff.java:23中,java使用0-index.name[2]引用name中的第三个字符。name.length不是name中的有效索引。请改用name.length-1。

两个循环都使用范围1..length,但Java的大多数索引都是从0开始的,而不是从1开始的,所以范围应该是0..length-1。文档明确说明了这一点,即javadoc of说:返回指定i处的char值索引的范围从0到长度-1。序列的第一个字符值在索引0处,下一个字符值在索引1处,依此类推,就像数组索引一样。
    Scanner sc = new Scanner(System.in);

    String name = sc.next().trim();

    for(int count=1; count<=name.length(); count++)
    {

        char ch = name.charAt(count);

        for(int down = name.length(); down>0; down--) {

            char sh;
            sh = name.charAt(down);

            if(ch == sh)
            {
                System.out.println("There is a repeated word");
            }else{
                System.out.println("There is no repeated word");
            }
        }
    }

}