我试图使用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...");
}
}
}
}
答案 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++;
}
这是一个基本错误,对于一个高效的程序员来说,能够单独和快速地处理这个问题非常重要。