有一个数组A,下面的代码把数组A逆序排列生成数组B,为什么我第一次输出的是正确的,第二次输出的就是些莫名其妙的数字了呢?难道我这样给数组B赋值不可以吗?请大家帮忙看看
int[] a = {1,3,5,7,9};
int[] b = new int[a.length];
for(int i = a.length - 1;i >= 0;i--){
//System.out.print(a[i] + " ");
int j = 0;
j++;
b[j] = a[i];
System.out.print(b[j] + " ");//输出9 7 5 3 1,正确
}
System.out.println("");
for(int n:b)
System.out.print(n + " ");//输出0 1 0 0 0,错误,为什么?
int[] a = {1,3,5,7,9};
int[] b = new int[a.length];
for(int i = a.length - 1;i >= 0;i--){
//System.out.print(a[i] + " ");
int j = 0;
j++;
b[j] = a[i];
System.out.print(b[j] + " ");//输出9 7 5 3 1,正确
}
System.out.println("");
for(int n:b)
System.out.print(n + " ");//输出0 1 0 0 0,错误,为什么?
在for循环中j的值只变了一次-->j从0变到1
放错地方了
你这样每次循环
循环体内的b[j]都是b[1];
其实就是
b[1]=a[i];
然后输出b[1]下次循环时i减了1
但是b[j]还是b[1]
所以到最后只有b[1]有值,并且是a[0]的值
前面那段代码要改成这样
int j = 0;
for (int i = a.length - 1; i >= 0; i--) {
b[j] = a[i];
System.out.print(b[j] + " ");
j++;// 输出9 7 5 3 1,正确
}
int[] a = {1,3,5,7,9};
int[] b = new int[a.length];
for(int i = a.length-1;i >=0;i--){
b[j] = a[i];
System.out.print(b[j] + " ");
j++;
}
System.out.println();
for(int n:b)
System.out.print(n + " ");你在定义变量的位置上出现了问题,你把int j=0定义在for循环里面是不行的,它会不断地在循环时给j赋值为0,所以你的程序中最后你只是在b[1]中存了a[]的最后一个为1的值。其他的还是你定义数组b时的默认值。
Test() {
} public static void main(String args[]) {
int[] a1 = { 1, 3, 5, 7, 9 };
int[] b1 = new int[a1.length];
for (int i = 0, j = a1.length - 1; i < a1.length && j >= 0; i++, j--) {
b1[i] = a1[j];
System.out.println(b1[i] + " ");
} }}
int[] b = new int[a.length];
int j = 0;
for(int i = a.length - 1;i > = 0;i--){
//System.out.print(a[i] + " ");
b[j] = a[i]; System.out.print(b[j] + " ");//输出9 7 5 3 1,正确
j++;
}
System.out.println("");
for(int n:b)
System.out.print(n + " ");//输出0 1 0 0 0,错误,为什么?
public static void main(String[] args){ int[] a= {1,3,5,7,9};
int[] b= new int[a.length];
//int j=0;
for(int i = a.length-1,j=0;i>=0;i--){
b[j]=a[i];
System.out.print(b[j]+" ");
j++;
}
System.out.println("");
for(int n=0;n<b.length;n++)
System.out.print(b[n]+" ");
}
}
应该在for之外...
public static void do1(int[] a){
int[] b = new int[a.length];
int j = 0;
for(int i = a.length - 1; i >= 0; i--){
b[j] = a[i];
j++;
}
for(int i : b){
System.out.print(i + " ");
}
}
public static void main(String[] args){
int[] a = {5, 6, 7, 8, 9, 10};
do1(a);
}