我这个代码是写冒泡法和选择法 然后随即输入数进行进行排列 结果没显示错误 只显示了一对字母 是什么意思呀
class maopaoArrange{
 public void maopao(int[] arr){
 int i,j,temp;
 for(i=0;i<arr.length-1;i++)
 {
  for(j=0;j<arr.length-i;j++)
  {
   if(arr[j]>arr[j+1])
   {
    temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=temp;
   }
  }
 }
 for(i=0;i<arr.length;i++)
 {
  System.out.print("冒泡排序后的数据");
  System.out.print("  "+arr[i]);
 }
}}
class MixArrange{
 public void Mix(int[] arr){
 for(int i=0;i<10;i++)
 {
  int temp=0;
  int k=i;
  for(int j=1+i;j<10;j++)
  {
   if(arr[j]<arr[k])
   {
    temp=arr[j];
    arr[j]=arr[k];
    arr[k]=temp;
   }
  }
 }
 for(int i=0;i<arr.length;i++)
 {
  System.out.print("选择排序后的数据");
  System.out.print("  "+arr[i]);
 }
 
}
}
public class ArrayArrange{
 public static void main(String[] args){
  maopaoArrange mc1=new maopaoArrange();
  MixArrange mc2=new MixArrange();
  int[] arr=new int[10];
  for(int i=0;i<10;i++)
  {
   arr[i]=(int)(Math.random()*30);
  }
  mc1.maopao(arr);
  mc2.Mix(arr);
  
 }

解决方案 »

  1.   

    for(j=0;j <arr.length-i;j++) 
    红色部分改成1
      

  2.   

    这还不显示错误,除非楼主贴错了,冒泡的嵌套循环for(j=0;j <arr.length-i-1;j++)应该是这样的,否则if(arr[j]>arr[j+1])这个语句会抄范围。另外楼主我帮你改改代码啊,结果更好看点
    System.out.print("冒泡排序后的数据\n");
    for (i = 0; i < arr.length; i++) {
        System.out.print("  " + arr[i]);
    }
    System.out.println("\n");
    把冒泡的输出改成这个样子
    System.out.print("选择排序后的数据\n");
    for (int i = 0; i < arr.length; i++) {
        System.out.print("  " + arr[i]);
    }
    System.out.println("\n");
    把选择排序的改成这个样子
    另外注意maopaoArrange这个类名首字母大写
      

  3.   

    第二个循环范围应该是:j<arr.length-i-1
      

  4.   

    class maopaoArrange{ 
    public void maopao(int[] arr){ 
    int i,j,temp; 
    for(i=0;i <arr.length-1;i++) {
     for(j=0;j <arr.length-i-1;j++) { //你原来的是:for(j=0;j <arr.length-i;j++)
      if(arr[j]>arr[j+1]) { 
      temp=arr[j]; 
      arr[j]=arr[j+1]; 
      arr[j+1]=temp; 
      }
     }
    }
    System.out.print("冒泡排序后的数据"); //这句从下面的for循环中移出来
    for(i=0;i <arr.length;i++){
    System.out.print("  "+arr[i]); 

    System.out.println();  //我加的。
    }
    } class MixArrange{
    public void Mix(int[] arr){ 
    for(int i=0;i <arr.length;i++){ //你原来是for(int i=0;i <10;i++) 你用10不对,如果arr这个数组不是10的长度,就有问题了。
    int temp=0; 
    //你用k记录最小元素的下标,这样在下面的for循环中就不用每次交换元素了。只在循环结束交换一次就可以了。
    int k=i;          
    for(int j=1+i;j <arr.length;j++){  //你原来是:for(int j=1+i;j <10;j++)
    if(arr[j] <arr[k]) { 
    k=j; 
    }
    }
    temp=arr[k];
    arr[k]=arr[i];
    arr[i]=temp;
    }
    System.out.print("选择排序后的数据");  //这句多下面的for循环中移出来。
    for(int i=0;i <arr.length;i++){
    System.out.print("  "+arr[i]); 

    System.out.println(); //我加的

    } public class ArrayArrange{ 
    public static void main(String[] args){ 
    maopaoArrange mc1=new maopaoArrange(); 
    MixArrange mc2=new MixArrange(); 
    int[] arr=new int[10]; 
    for(int i=0;i <arr.length;i++){ //for(int i=0;i <10;i++)
    arr[i]=(int)(Math.random()*30); 
    System.out.print(" "+arr[i]);   //我加的。把数组的原始状态打印出来,以便比较。
    }
    System.out.println();         //我给你加的
    mc1.maopao(arr); 
    mc2.Mix(arr);