随机产生两位数10个,并存放进一维数组,按从大到小排序,显示原始和排序后的结果。排序用方法实现
错在那里阿?
public class oliver
{
public oliver(int k)  //利用产生随机数的方式为数组赋值。
{

int m;
    int aa[]=new int[10];
      
       for (int i=0;i<k;i++)                 
         { 
        m=(int)(100*Math.random());
         
             aa[i]=m;
            System.out.println("原始数据:"+i);
            System.out.println(aa[i]);
          }
};

  
   
   public void Sort(int aa[])    //按从大到小为数组排序。
 {  
   int i=0;
   for (int j=i+1;j<10;j++)
   
   { 
   if (aa[i]>aa[j])
   
         {int t=aa[i];aa[i]=aa[j];aa[j]=t;}
   }
  
   for (int h=0;h<10;i++)
       {
        
         System.out.println(" 排序后:"+h);
      
         System.out.println(aa[h]);
       }
}
public static void main(String args[])  //main函数
{
   oliver chenhao=new oliver(10);
   
   chenhao.Sort(aa[]);
   
}

解决方案 »

  1.   

    你的程序有4个重要的错误:
    1.排序算法错误
    for (int j=i+1;j<10;j++)
       
       { 
       if (aa[i]>aa[j])
       
             {int t=aa[i];aa[i]=aa[j];aa[j]=t;}
       }
    改为:
    int t = 0;
        for (int i=0; i < 9; i++){
         for(int j=i+1;j<10;j++){
         if(aa[i]<aa[j]){
         t=aa[i];
         aa[i]=aa[j];
         aa[j]=t;
         }
         }
        }
      

  2.   

    2.输出结果有误
    for (int h=0;h<10;i++) // i++ 改成 h++
           {        
             System.out.println(" 排序后:"+h);
          
             System.out.println(aa[h]);
           }改为:
    System.out.println(" 排序后:");
        for (int h = 0; h < 10; h++) {
          System.out.print(aa[h]+"  ");
        }3.
    public void Sort(int aa[])    //此处不用加参数 int aa[],把 aa[] 的定义放在类的开始就行了
    如:
    先改 public void Sort()
    再在类的开始加
    class oliver {
      private int aa[]; //加这句4.chenhao.Sort(aa[]); //去掉 aa[], 就算是要传参数也要写成这样:
    chenhao.Sort(aa);
      

  3.   

    第2个错误是造成死循环的原因另外,你的输出不方便查看结果我把你的程序改成了这样,你可以运行看一下结果
    import java.util.*;class oliver {
      private int aa[];
      public oliver(int k) { //利用产生随机数的方式为数组赋值。
        int m;
        aa = new int[10];
        System.out.println("原始数据");
        for (int i = 0; i < k; i++) {
          m = (int) (100 * Math.random());
          aa[i] = m;
          System.out.print(aa[i]+"  ");
          //System.out.println(aa[i]);
        }
      };  public void Sort() { //按从大到小为数组排序。
        int t = 0;
        for (int i=0; i < 9; i++){
         for(int j=i+1;j<10;j++){
         if(aa[i]<aa[j]){
         t=aa[i];
         aa[i]=aa[j];
         aa[j]=t;
         }
         }
        }
    System.out.println(" 排序后:");
        for (int h = 0; h < 10; h++) {
          System.out.print(aa[h]+"  ");
        }
      }  public static void main(String args[]) { //main函数
        oliver chenhao = new oliver(10);
    System.out.println();
        chenhao.Sort();
      }
    }
      

  4.   

    排序算法错误不用多想,记住冒泡排序要二重FOR就行了
        for (int i=0; i < 9; i++){
         for(int j=i+1;j<10;j++){
         if(aa[i]<aa[j]){
         t=aa[i];
         aa[i]=aa[j];
         aa[j]=t;
         }
         }
        }