字符串索引超出范围

我试图让这个程序计算连续字符的数量,我得到的错误是:“字符串索引超出范围。” 谁能帮我解决这个问题?

import javax.swing.*; public class Project0 { public static void main(String[] args){ String sentence; sentence = JOptionPane.showInputDialog(null, "Enter a sentence:"); /*Asks the user to enter a sentence*/ int pairs = 0; for (int i = 0; i < sentence.length(); i++){ //counts the pairs of consecutive characters if ( sentence.charAt(i) == sentence.charAt(i+1)) pairs++; } JOptionPane.showMessageDialog(null, "There were " + pairs + " pairs of consecutive characters"); }//main }// Project0 

循环中的最后一个元素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]!! 

sentence.charAt(i+1)会在for循环的最后一步将其作为i + 1 > sentence.length()

您需要将for循环的上限更改为不会一直到最后,因为您查找连续字符的方式是“查看第i个字符,然后查看下一个字符”。 一旦你到达终点,就没有“下一个”,所以只需停在倒数第一个。

 for (int i = 0; i < sentence.length()-1; i++)