日期:2014-05-20  浏览次数:20896 次

数组越界问题求解
public void countFactor(int n) {
int k = 1;
int i = n;
int temp = 1;
int indexa = 1;
int index = 1;
int[] a = new int[indexa];
int[] b = new int[index];
// System.out.print(n + "=");
while (n > k) {
if (n % k == 0) {
// System.out.print(k + "*");
a[indexa - 1] = k;
indexa++;
n = n / k;
}
k++;
}
while (temp != i) {
for (int j = a.length; j > 0; j--) {
while (a[j] != 0 || a[j] != 1) {
temp = temp * a[j];
b[index - 1] = a[j];
index++;
}
}
}
for (int j = b.length; j > 0; j--) {
System.out.println(b[j]);
}
}
编译 数组a[indexa-1] 出现数组越界的异常 请问如何解决啊?

------解决方案--------------------
你的数组长度,在初始化的时候

int[] a = new int[indexa];
------解决方案--------------------
Java code
int indexa = 1;
int index = 1;
int[] a = new int[indexa];
int[] b = new int[index];

------解决方案--------------------
探讨

引用:

你的数组长度,在初始化的时候

int[] a = new int[indexa];


初始化之后就不可以修改了啊?
我后面indexa改变了 数组都不改变吗?

------解决方案--------------------
探讨

引用:

Java code
int indexa = 1;
int index = 1;
int[] a = new int[indexa];
int[] b = new int[index];

这2个数组长度只有1。。。
数组的长度是不能改变的,初始化的时候就确定了。

那我下面那个b数组也是定义错了的哦?

------解决方案--------------------
一旦new了,便定了...
Java code

int[] array=new int[4];
int Array[];
int i=10;
Array=new int[i];
//这样你可以在确定长度值之后new一下,估计没你要的效果,建议用Collection或其他。

------解决方案--------------------
如果想让数组的容量变化,只能用ArrayList!!
------解决方案--------------------
探讨
如果想让数组的容量变化,只能用ArrayList!!