字符数组的异常错误

时间:2014-11-03 22:01:40

标签: java arrays indexoutofboundsexception character-arrays

我正在尝试编写一个程序,以反向显示用户的输入。我知道有更好的方法可以做到这一点,但让我长话短说我的老师不是最了解这里所说的人到目前为止所得到的:

public static void main(String[] args) 
{
    String input;
    int len;

    input = JOptionPane.showInputDialog(null, "Please enter a string value: ");
    len = input.length();
    char[] txt = new char[len];
    for (int i = 0; i <= len; i++)
    {
        txt[i] = input.charAt(i);
    }
    for (int j = len; j >= 0; j--)
    {
        System.out.print(txt[j]);
    }
}

我一直收到的错误如下:

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:7     在程序 .main( program .java:28)

它指向这一行:

System.out.print(txt[j]);

我理解错误是说我超出了数组的限制而我没有看到如何。 任何帮助或输入将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:3)

替换

for (int i = 0; i <= len; i++)

for (int i = 0; i < len; i++)

for (int j = len; j >= 0; j--) {

for (int j = len-1; j >= 0; j--) {

数组索引从零开始,以数组长度结束 - 1。

答案 1 :(得分:2)

请更改第1次循环中的循环条件!

i <= len

i < len 

它从0 ... n-1

您还需要在第二个循环中更改初始化条件

int j = len

int j = len-1

它来自n-1 ... 0

答案 2 :(得分:1)

将数组从(length-1)迭代到0。 Array [length]导致IndexOutOfBoundsException。

示例代码:

for (int i = 0; i < len; i++){
    txt[i] = input.charAt(i);
}
for (int j = len-1; j >= 0; j--){
    System.out.print(txt[j]);
}