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