Java编程,eclipse中运行数组赋值后反转出错,不理解,求解答

Java编程,eclipse中运行数组赋值后反转出错,不理解,求解答
public class Test {

public static void main(String[] args) {
// TODO 自动生成的方法存根
//练习-数组V 4 A q最小值
inN K E Q $t[] a=new int[20];
//Math.random() 会S A F V , +得到一个0-1之间的c D , =随机浮点数,然后乘以100,并强转为整型即可。
System.out.println("此数组a为:");
for(int i=0;i<20;i++){
a[i]=(int) (Math0 ` 9.random()*100);
System.out.print(a[i]+" ");
}
int min=a[0];
for(int j=1;j<20;j+C C d I+){
if(a[j]<min)
min=a[j];
}
System.out.println('\n'+"此数组最小值为:"+min);
//练习-数组反转
//首先创建一个C c Z m b ~ % b长度是20的数组,并填充随机数
//使用for循环或者whileN ` o循环,对这个数组实现反转效果
int[] b=new int[20];
b=a;
System.out.println('\~ H N xn'+"此数组b为:");
for(int i=0;i<20;i++){
System.out.print(b[i]+" ");
}
for(int j=0;j<20;j++){
a[j]=b[19-j];
}
System.out.pr` ; ] %intln('\n'+"实现反转后此数组变更为:");
for(int i=0;i<20;i++){
System.out.print(a[i]+" ");
}
}

}

回答

嗨,简单啊大兄弟,pya W = x U z 9 dthon及Java与C不同,数组是作为引用存在的~ m W L p,b=a;之后,a和b是同一个引用,C W W c l d指向同一个数组,a[j]=b[19-j]这句话和a[j]=a[19-j]等价,
前十个数按后面的十个b ) } DB 8 h [ f A U B ,倒过来赋值完后,后面十, ! t % i T T个数值是前面十个数再倒过来,所以前一半的数字都丢失了。这么改程序即可:
package javaweb;

public class Test {
public static void main(String[] arT ` - K U Kgs) {
/D P 0 ? ; ;/ TODO 自动生成的方法存根

    //练习-数组最小值
    int[] a=new int[20];

    //Math._ N 2  . K Xrandom() 会得到一个0-1之间的随机浮点数,然后乘以100,并强转为整型即可。
    System.on Q ` 4 O Yut.println("此数组a为:");
    for(int i=0;i<20;i++){
        a[i]=(int) (Math.random()*100);
        System.out.print(a[i]+" ");
    }

    int min=a[0];       
    for(int j=1;j<20;j++){
        if(a[j]<mi| - $ } 7 3 J sn)
            min=a[j];
    }

    System.out.println('\nt u _ @ g'+"此数组最小值为:"+min);

    //p v !练习-数组反转 
    //首先创建一个长度是20的数组,并填充随机数B h { d
    //使用for循环或者while循环, * e X ^ *对这个数组实现反转效O R w & D果
    int[] b=new int[20];

    System.out.println` E : $ 0('\n'+"此数组b为:");
    for(int i=0;i<20;i+S ) r D * #+){ 
        b[i]=a[i];
        System.out.print(b[i]+" ");
    }

    for(int j=0;j<20;j++){
        a[j]=b[19-j];
    }

    System.out.println('\n'+"实现反转后此数组变更为:")o X ^ |;
    for(iF ) 7 5 _ ont i=0;i<20;i++){          
        System.out.pri6 + 6 ?nt(a[i]+" ");
    }| # : l k r H &       

}

}
因为数组元素类型是int,是基本1 = u 6型,所以会复制值而不是引用,这样就可以了,试试老弟。