【发布时间】:2014-06-06 07:29:39
【问题描述】:
我的代码有问题。我可以告诉我为什么我得到一个索引越界错误。此代码假设将 2 字节数组合并为一个。根据“list[position] = byteAdd[t];”但我无法弄清楚出了什么问题。这些数组初始化为 200 字节大小。
Scanner input = new Scanner(System.in);
System.out.println("Enter a web Address");
String net = input.nextLine();
String nets [] = net.split("\\.");
byte[] length = new byte [200];
byte[] byteAdd= new byte[200];
int bytelength = byteAdd.length*2;
byte[] list = new byte [200];
for (int i = 0 ; i<nets.length; i++ )
{
length[i]= (byte)(double) ( nets[i].length());
System.out.println(length[i]);
}
for (int i = 0 ; i<nets.length; i++ )
{
byteAdd = nets[i].getBytes();
}
int position= 0 , max= 0;
for (int i = 0 ; i<bytelength; i++)
{
list[position]=length[i];
position++;
for (int t = 0 ; t<length[i]; t++)
{
list[position] = byteAdd[t];
System.out.println(t+" "+length[i]);
System.out.println("Array lenght" + list.length);
//System.out.println(t+"inner" + position);
position++;
}
//System.out.println(i+"outter");
}
这是堆栈跟踪吗?
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 3 在 test.test.main(test.java:51)
错误在这一行list[position] = byteAdd[t];
【问题讨论】:
-
哪一行抛出异常?
bytelength的值是多少? -
堆栈跟踪(您在这里拥有的最有价值的信息,您忘记向我们展示)显示您尝试访问的索引并标识发生错误的行。当您阅读并检查代码时,您发现了什么?
-
您在哪一行得到异常?
-
@brianChiem 那么是访问
list或访问byteAdd时的错误吗?当您打印position和t的值时,此时哪一个是“3”? “3”是这两个数组之一的无效索引。找出原因,找出原因,然后修复它。
标签: java loops indexoutofboundsexception