java的小问题,在线请人帮个忙

来源:百度知道 编辑:UC知道 时间:2024/05/25 07:21:08
具体程序如下:

public class Yuesefuhuan {
public static void main(String args[]) {
int n = 5;
int m = 2;
int j, p, k;
int a[] = new int[n];
int b[] = new int[n];
for (int i = 0; i < n; i++) {
a[i] = i + 1;
}
for (int i = n; i > 1; i--) //循环4次
{
k = m % i;//k的值依次为2,2,2,0
for (j = 0; j < (i - 1) && k < i; j++, k++) {
//循环至j<i-1且k<i,将a[k]的值交给b[j]。
//i=5时(k=2到4), b[0] = a[2], b[1] = a[3], b[2] = a[4]
//i=4时(k=2到3), b[0] = a[2], b[1] = a[3]
//i=3时(k=2), b[0] = a[2]
//i=2时(k=0到1,j=0) b[0] = a[0]
//类似一个阶梯状赋值。
b[j] = a[k];
}
for (int i = 0; i < n; i++) {
if (a[i] != 0) {
//只有a[0]=3,其他数组元素的值都为0
System.out.println(a[i]);
}
}
}
}
}
我编译后出错误,说什么在main方法中已经定义i
我不知道这错误怎么出现的
请高手帮说下
在线等......谢谢

第二个for循环中定义了i,在这个循环中嵌套的for循环里你又定义了一个i。重复定义了。

看一看我加的注释吧。。
public static void main(String args[]) {
int n = 5;
int m = 2;
int j, k; //没用的变量p,我去掉了
int a[] = new int[n];
int b[] = new int[n];
for (int i = 0; i < n; i++) {
a[i] = i + 1;
}
for (int i = n; i > 1; i--)
{
k = m % i;
for (j = 0; j < (i - 1) && k < i; j++, k++) {

b[j] = a[k];
}
for (int i1 = 0; i1 < n; i1++) { //这里你开始用的是i,与上层的循环变量名字冲突了,我改成了i1,下边的也要跟着改哦.(你原来的"System.out.println(a[i])"这行因为你在前面已经让"i=n",但是a[5]不存啊,所以这就报错了)
if (a[i1] != 0) {
System.out.println(a[i1]);
}
}
}
}