请大家帮我分析下这个java程序错哪里了

来源:百度知道 编辑:UC知道 时间:2024/06/19 20:34:07
class NumSort{
public static void main(String[] args){
int[] a = new int[args.length];
for(int i=0;i<args.length;i++){
a[i] = Integer.parseInt(args[i]);
}
/*for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");

}*/
selectionSort(a);
print(a);
}
public static int[] selectionSort(int[] a ){
int k,temp;
for(int i=0;i<a.length;i++ ){
k = i;
for(int j=k+1;j<a.length;j++){
if(a[j]<a[k]){
k = j;
}
}

if(k != i){
temp = a[i];
a[i] = a[k];
a[k] = a[i];
}

}
return a;
}
public static void print(int[] a){

for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();/*为什么要写这句,写成System.out.print()为什么不能通过编译*/
}
}

错误只有一个:
if(k != i){
temp = a[i];
a[i] = a[k];
a[k] = a[i];
}
这里是想交换a[i],a[k]吧
最后一个改成a[k] = temp;
改完就可以编译运行了

System.out.println();只是为了换行而已
System.out.print()不能编译是因为方法print(参数)
必须有参数,若想什么也不输出,可以这样写System.out.print(“”);
参数是空字符串。

另外,args是从命令行读入的,在运行的同时要输入数据.
如:
javac NumSort.java
java NumSort 4 8 5
4 5 8 (这是输出)
其实最好不要直接使用args,要从键盘输入数据可以用BufferedInputStream或Scanner

println()会输出一个换行并且立即刷新显示缓存
效果差不多就是换个行罢了