Java 它编译了,但给了我一个例外

Java 它编译了,但给了我一个例外,java,swing,Java,Swing,这个程序应该获取一个句子并返回大写字母、小写字母和数字的数量。它编译、请求输入并返回: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9 at java.lang.String.charAt(Unknown Source) at projects.projectzero.check(projectzero.java:16) a

这个程序应该获取一个句子并返回大写字母、小写字母和数字的数量。它编译、请求输入并返回:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9
    at java.lang.String.charAt(Unknown Source)
    at projects.projectzero.check(projectzero.java:16)
    at projects.projectzero.main(projectzero.java:10)

成套项目;
导入javax.swing.JOptionPane;
公共类projectzero{
公共静态void main(字符串参数[]){
字符串句子=”,addToSentence=”;
而(!addToSentence.equalsIgnoreCase(“停止”)){
addToSentence=JOptionPane.showInputDialog(“输入单词或输入停止到结束程序”);
句子+=附加内容;
}
检查(判决);
}
公共静态无效检查(字符串输入){
int大写=0,小写=0,数字=0;

for(int i=0;i字符串(或数组,或
列表)中最后可用的索引是
length()-1
,但如果
i
达到
length()
,则不会停止
for
循环


i
到达
length()
之前停止迭代。替换
Java中的数组是基于零的。因此循环必须在
input.length()-1处停止

for(int i=0;i
检查
i
而不是
i
package projects;

import javax.swing.JOptionPane;

public class projectzero {
    public static void main(String args[]) {
        String sentence = "", addToSentence = "";
        while (!addToSentence.equalsIgnoreCase("stop")) {
            addToSentence = JOptionPane.showInputDialog("input words or enter  stop to end program");
            sentence += addToSentence;
        }
        check(sentence);
    }

    public static void check(String input) {
        int upperCase = 0, lowerCase = 0, numbers = 0;
        for (int i = 0; i <= input.length(); i++) {
            char c = input.charAt(i);
            if (Character.isUpperCase(c))
                upperCase++;
            else if (Character.isLowerCase(c))
                lowerCase++;
            else if (Character.isDigit(c)) numbers++;
        }
        System.out.println("the number of uppercase: " + upperCase + " the number of lower case : " + lowerCase + "the number of digits is: "
                + numbers);
    }
}
for ( int i = 0 ; i < input.length() ; i++ ) {
for ( int i = 0 ; i < input.length() ; i++ ) {