有一个数组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,错误,为什么?

解决方案 »

  1.   

    哥啊,你在给int[] b赋值的时候出错了!你把所以的数没次都赋给了数组的同一个位子b[1]了。
    在for循环中j的值只变了一次-->j从0变到1
      

  2.   

    int j=0;
    放错地方了
    你这样每次循环
    循环体内的b[j]都是b[1];
    其实就是
    b[1]=a[i]; 
    然后输出b[1]下次循环时i减了1
    但是b[j]还是b[1]
    所以到最后只有b[1]有值,并且是a[0]的值
      

  3.   

    因为你的j的位置定义不正确
    前面那段代码要改成这样
             
            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,正确
            }
      

  4.   

          int j = 0; 
          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时的默认值。
      

  5.   

    public class Test {
    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] + " ");
    } }}
      

  6.   

    int[]   a   =   {1,3,5,7,9}; 
    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,错误,为什么?
      

  7.   

    public class Array1 {
    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]+"   ");
    }
    }
      

  8.   

    int   j   =   0; 
    应该在for之外...
      

  9.   

    同意楼上public class Test {

    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);
    }