JAVA萌新一枚,写了一个代码用作数组的构建和排序。数组是在TestArray类中被创建的,在ArraySort程序中另外创建了一个函数serOrder用于排序,但是发现这个setOrder不能排序,怎么输出就怎么输出的,求解,谢谢大佬们!
import java.util.Arrays;
public class ArraySort{
public int[] sim=new int [10];
public void setOrder(int sim[]) {
for(int a=0;a<sim.length-1;a++)
{
for(int b=0;b<sim.length-a-1;b++)
{
if (sim[b]>this.sim[b+1])
{
int temp=sim[b];
sim[b]=sim[b+1];
sim[b+1]=temp;
}
}
}
}
public void setArray(int i)
{ for(int j=0;j<sim.length;j++)
{
this.sim[j]=i;
--i;
}
}
public static void main(String Args[]) {
ArraySort array=new ArraySort();
array.setArray(10);
System.out.println("初始化数组的结果:");
System.out.println(Arrays.toString(array.sim));
System.out.println();
array.setOrder(array.sim);
System.out.println("排序后的结果:");
System.out.println(Arrays.toString(array.sim));
System.out.println();
System.out.println();
TestArray array2=new TestArray();
array2.creatArray();
System.out.println("排序后的结果:");
array2.setOrder(array2.ar);
System.out.println(Arrays.toString(array2.ar));
}
}
import java.util.Scanner;
public class TestArray extends ArraySort{
public int[] ar;
public void creatArray() {
System.out.println("请输入想创建的数组长度:");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
ar=new int[i];
System.out.println("请输入数组元素:");
for(int j=0;j<this.ar.length;j++)
{
Scanner sd=new Scanner(System.in);
this.ar[j]=sd.nextInt();///数组初始化完成
}
System.out.println("初始化后的结果:");
for (int k=0;k<this.ar.length;k++) {
System.out.print(this.ar[k]+",");
}
System.out.println();
}
public void output(){
for(int a=0;a<this.ar.length;a++) {
System.out.printf(this.ar[a]+",");
}
}
public static void main(String agrs[]) {
}
}
这是另外的类
你怕是在逗我,首先你的代码写的就有问题,第一:SetArray方法,方法名应该遵循驼峰命名规则,首个字符应该小写。第二:SetArray方法 i = -- i,这是什么操作,直接 --i 就行了。第三:Scanner 没有关闭。第四:明明Scanner可以重用非要在for循环中每次都new一个。最后你所说的问题:在你的ArraySort中有个数组叫 sim,在你的TestArray中压根就没有对它进行操作,你的setOrder方法操作的是 sim,不是你TestArray中创建的数组,你最后的setOrder的调用是对你上面数组的重复调用
排序和输出的数组不是一个。ArraySort中setOrder是对数组sim进行排序,而TestArray中output是对数组ar进行输出
https://www.xiexiebang.com/a14/201905159/09d4f5f3b8455b0a.html