使用JOptionPane计算java中的连续字母?

时间:2014-09-24 17:28:22

标签: java

我试图使用JOptionPane计算java中的连续字母,当我尝试编译并运行我的代码时,我得到了这个:

exception in thread main java.lang.StringIndexOutOfBoundsException: String index out of range: 5

我觉得我的大部分时间都没有了,所以我不确定这里有什么问题。任何帮助将不胜感激。

我的代码:

import javax.swing.JOptionPane;

public class Project {

    public static void main(String[] args) {

        String input = JOptionPane.showInputDialog("Enter a string...");

        while (true) {

            if (input.equals("Stop")) System.exit(0);

            else {
                int count = 0;
                int len = input.length();
                for (int i = 0; i < len; i++) {
                    if (input.charAt(i) == input.charAt(i + 1)) count++;
                }

                JOptionPane.showMessageDialog(null, "There are " +
                    count + "pairs of consecutive letters.");

                input = JOptionPane.showInputDialog(null,
                    "Enter a string...");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

问题是:

input.charAt(i + 1)

这会抛出一个错误,因为当你在数组的最后一个元素时,它会尝试获取下一个元素但是没有一个元素。考虑稍微修改一下你的逻辑。

在for循环中你可以这样做:

for (int i = 0; i < len - 1; i++) {

答案 1 :(得分:0)

JOptionPane绝对没有那么做,你应该修改你的头衔。问题出在这里:

for (int i = 0; i < len; i++) {
   if (input.charAt(i) == input.charAt(i + 1)) count++;
}

替换那段代码
for (int i = 0; i < len - 1 ; i++) {
    if (input.charAt(i) == input.charAt(i + 1)) count++;
}

这是一个基本错误,对于一个高效的程序员来说,能够单独和快速地处理这个问题非常重要。