对于具有字符串长度的循环不起作用

时间:2014-02-05 16:32:47

标签: java string-length

我的程序执行错误。

错误是:

 --------------------Configuration: <Default>--------------------
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
    at java.lang.String.charAt(String.java:687)
    at codeinstaneous.main(codeinstaneous.java:19)

流程已完成。 为什么会发生这种情况?这是我的代码:

import javax.swing.*;

public class codeinstaneous {
    public static void main (String[] args) {
        String theCode;
        theCode = JOptionPane.showInputDialog("Enter the code to decoded it :");
        char theBit;
        char theSource='a';
        int i=0;
        for(i=0;i <= theCode.length() ;i++){
            theBit = theCode.charAt(i);
            if(theBit=='0')
                i++;
        if(theBit=='0')
            theSource='1';
        }    
        JOptionPane.showMessageDialog(null,theSource);
    }    
}

2 个答案:

答案 0 :(得分:4)

这一行:

for(i=0; i <= theCode.length();i++){

应该有<而不是<=。这是因为您正在为该字符串的长度执行for循环。由于String是一个基于零的数组,您尝试在i =长度时找到该字符,并且不能,因为那里没有字符。因此,它会引发异常,因为它无法找到该字符。所以要解决这个问题,请使用以下代码:

for(i=0; i < theCode.length();i++){

答案 1 :(得分:0)

更改

for(i=0; i <= theCode.length(); i++)

for(i=0; i < theCode.length(); i++)