Java中的字符串索引超出范围

Java中的字符串索引超出范围,java,Java,我想用这个程序来计算连续字符的数量 我得到的错误是: “字符串索引超出范围。” import javax.swing.*; 公共类项目0{ 公共静态void main(字符串[]args){ 串句; 语句=JOptionPane.showInputDialog(null,“输入句子:”);/*要求用户 输入一个句子*/ 整数对=0; 对于(int i=0;i

我想用这个程序来计算连续字符的数量 我得到的错误是:

“字符串索引超出范围。”

import javax.swing.*;
公共类项目0{
公共静态void main(字符串[]args){
串句;
语句=JOptionPane.showInputDialog(null,“输入句子:”);/*要求用户
输入一个句子*/
整数对=0;
对于(int i=0;i<句子长度();i++){//计算连续字符对
if(句子.字符(i)=句子.字符(i+1))对++;
}
showMessageDialog(null,“有”+对+“对连续字符”);
}//主要
}//项目0

循环中的最后一个元素100%保证会导致问题。也许你的循环中只有长度-1

以代码为例:

for (int i = 0; i < sentence.length(); i++){
    if ( sentence.charAt(i) == sentence.charAt(i+1)) pairs++;
}

String s = "AABBCC";

first loop, i = 0 : compare s[0] to s[1]
first loop, i = 1 : compare s[1] to s[2]
first loop, i = 2 : compare s[2] to s[3]
first loop, i = 3 : compare s[3] to s[4]
first loop, i = 4 : compare s[4] to s[5]
first loop, i = 5 : compare s[5] to s[6] // WOAH, you can't do that! there is no s[6]!!
for(int i=0;i<句子长度();i++){
if(句子.字符(i)=句子.字符(i+1))对++;
}
字符串s=“AABBCC”;
第一个循环,i=0:比较s[0]和s[1]
第一个循环,i=1:比较s[1]和s[2]
第一个循环,i=2:比较s[2]和s[3]
第一个循环,i=3:比较s[3]和s[4]
第一个循环,i=4:比较s[4]和s[5]
第一个循环,i=5:比较s[5]和s[6]//哇,你不能这么做!没有s[6]!!

语句。字符(i+1)
会导致这种情况,因为在for循环的最后一步中,
i+1>语句。长度()
您需要更改
for
循环的上限,使其不会一直到结尾,因为查找连续字符的方式是“查看
i
th字符,然后查看下一个字符 一旦你到了终点,就没有“下一个”,所以就停在下一个到最后一个

for (int i = 0; i < sentence.length()-1; i++)
for(int i=0;i<句子长度()-1;i++)
for (int i = 0; i < sentence.length()-1; i++)