簡體   English   中英

該程序不斷給我一個錯誤:線程“ main”中的異常java.lang.StringIndexOutOfBoundsException:字符串索引超出范圍:4

[英]This program keeps on giving me an error: Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 4

當我編寫這樣的代碼時,總是會出現此錯誤。 它肯定是在構建文件,但不僅僅是給我豁免。 我是初學者。 你們能否請我幫忙,並指出我犯的錯誤。

public static int binToDec(int i)
{
    int[] numbers;//initialize variable
    int f = 4;
    String iString = "" + i;
    int result = 0;
    int length = iString.length();
    numbers = new int[length];
    int power;
    for(power = iString.length(); power>=0;power--)
    {
    while(f == length && f >= 0)
    {

        numbers[power] = iString.charAt(power)^power;
    }

    length--;
    f--;
    }
    for(int g = 0; g <= numbers.length; g++)//double check constraints
    {
        result = numbers[g] = numbers[power];
    }

        return result;
}

它給我的錯誤是:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:686)
at BaseConvertor.binToDec(BaseConvertor.java:34)
at BaseConvertorTester.main(BaseConvertorTester.java:10)

我也有一個測試器文件。 這里是:

 public class BaseConvertorTester 
  {
public static void main(String args[])

{

    BaseConvertor.binToDec(1010);   

}
}

如果字符串的長度為X ,則表示它具有X字符,這些字符的索引從0開始。 因此,最后一個字符將位於索引X-1 ,而不是X

在您的for循環中,您有:

for (power = iString.length(); power >= 0; power--)

但這意味着,如果iString長度為4 ,它將嘗試訪問索引為4的字符,該字符將為第五個字符(字符串中不存在,實際上超出范圍)。 試試看

for (power = iString.length() - 1; power >= 0; power--)

更改

for(power = iString.length(); power >= 0; power--)

for(power = iString.length(); power > 0; power--)

當iString.length()僅是4時,循環從4開始,然后依次為3、2、1然后0,這總共是5次。將> =更改為>將排除0,僅將其運行4次。

我也會改變這個

String iString = "" + i;

String iString = Integer.toString(i);

更好的編程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM