Java 尝试字符串中的单独单词--在索引中出现越界异常

Java 尝试字符串中的单独单词--在索引中出现越界异常,java,string,exception,words,bounds,Java,String,Exception,Words,Bounds,我能够编译,但是当它到达第12行时遇到运行时错误,该行读取charx=input.charAt(I)

我能够编译,但是当它到达第12行时遇到运行时错误,该行读取
charx=input.charAt(I)
的位置有关吗

线程“main”java.lang.StringIndexOutofBoundsException中出现异常。。。 字符串索引超出范围:12处 HW12.main(HW12.java:12)处的java.lang.String.charAt(String.java:658)

import java.util.Scanner;
公共级HW12{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“输入以下格式的句子:'EnterASentenceInTheFollowingFormat'”;
字符串输入=键盘.nextLine();
StringBuilder令牌=新的StringBuilder();
对于(int i=0;i 0){
标记。附加(“”);
}
}
System.out.println(“+token”);
}
} 

Java从0开始索引,这意味着字符串中的最后一个字符的长度为()。因此,如果您有一个包含12个字符的字符串,那么最后一个字符将位于索引11处。因此,您必须替换此处的小于等于号:

for (int i = 0; i <= input.length(); i++) {

for(int i=0;iJava从0开始索引,这意味着字符串中的最后一个字符的长度将为()-1。因此,如果您有一个包含12个字符的字符串,那么最后一个字符将位于索引11。因此,您必须在此处替换小于等于号:

for (int i = 0; i <= input.length(); i++) {

for(int i=0;i任何字符串或数组结构的索引范围从0到length()-1,
比如

将for(…)循环条件更改为

     for(int i = 0; i < input.length(); i++){ // NOTE I have changed <= to <
         ...
     } 

for(int i=0;i
将for(…)循环条件更改为

     for(int i = 0; i < input.length(); i++){ // NOTE I have changed <= to <
         ...
     } 

for(int i=0;i     for(int i = 0; i < input.length(); i++){ // NOTE I have changed <= to <
         ...
     }