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

图片说明

public class Test {

public static void main(String[] args) {

// TODO 自动生成的方法存根

//练习-数组最小值

int[] a=new int[20];

//Math.random() 会得到一个0-1之间的随机浮点数,然后乘以100,并强转为整型即可。

System.out.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]<min)

min=a[j];

}

System.out.println('\n'+"此数组最小值为:"+min);

//练习-数组反转

//首先创建一个长度是20的数组,并填充随机数

//使用for循环或者while循环,对这个数组实现反转效果

int[] b=new int[20];

b=a;

System.out.println('\n'+"此数组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.println('\n'+"实现反转后此数组变更为:");

for(int i=0;i<20;i++){

System.out.print(a[i]+" ");

}

}

}

回答

嗨,简单啊大兄弟,python及Java与C不同,数组是作为引用存在的,b=a;之后,a和b是同一个引用,指向同一个数组,a[j]=b[19-j]这句话和a[j]=a[19-j]等价,

前十个数按后面的十个数倒过来赋值完后,后面十个数值是前面十个数再倒过来,所以前一半的数字都丢失了。这么改程序即可:

package javaweb;

public class Test {

public static void main(String[] args) {

// TODO 自动生成的方法存根

    //练习-数组最小值

int[] a=new int[20];

//Math.random() 会得到一个0-1之间的随机浮点数,然后乘以100,并强转为整型即可。

System.out.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]<min)

min=a[j];

}

System.out.println('\n'+"此数组最小值为:"+min);

//练习-数组反转

//首先创建一个长度是20的数组,并填充随机数

//使用for循环或者while循环,对这个数组实现反转效果

int[] b=new int[20];

System.out.println('\n'+"此数组b为:");

for(int i=0;i<20;i++){

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'+"实现反转后此数组变更为:");

for(int i=0;i<20;i++){

System.out.print(a[i]+" ");

}

}

}

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

以上是 Java编程,eclipse中运行数组赋值后反转出错,不理解,求解答 的全部内容, 来源链接: utcz.com/a/42221.html

回到顶部