2011-02-16 114 views
2

我试图让这个程序来计算连续字符的数量 和im得到错误,说:“字符串索引超出范围。任何人都可以帮我 解决这个问题吗?字符串索引超出范围

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 

回答

2

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

sentence.charAt(i+1)将在for循环

0

你需要改变你的for循环的上限不全力以赴的最后一步会以此为i + 1 > sentence.length()因为您查找连续字符的方式是“查看i”字符,然后查看下一个“ ”。一旦你到达最后,那么不是“下一个”,所以只要停在最后一个。

for (int i = 0; i < sentence.length()-1; i++) 
相关问题