A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 L.I.F.E 于 2013-5-17 16:00 编辑
  1. class TestPaiXu
  2. {
  3.         /*交换位置函数,返回值应该为void型*/
  4.         public static void swap(int[] arr ,int a,int b)
  5.         {
  6.                 int temp = arr[a];
  7.                 arr[a] = arr[b];
  8.                 arr[b] = temp;
  9.                
  10.         }
  11.     /*写一个打印函数*/
  12.         public static void printArray(int[] arr)
  13.         {
  14.                 System.out.print("[");
  15.                 for ( int x =0; x < arr.length ; x++ )
  16.                 {
  17.                         if (x!=arr.length-1)
  18.                                 System.out.print(arr[x]+",");
  19.                         else
  20.                                 System.out.println(arr[x]+"]");

  21.                 }
  22.         }
  23. public static void xuanZe(int[] arr)
  24.         {
  25.                 /*下面要开始写一轮一轮的遍历比较,运用多重嵌套
  26.                 从arr【0】开始依次与arr【2】-arr【max】比较*/

  27.                 for ( int x = 0 ; x < arr.length - 1; x++ )
  28.                 {
  29.                         for (int y = x + 1; y < arr.length ;y++ )
  30.                         {
  31.                                 if(arr[x] > arr[y] );//进行比较,
  32.                                 {
  33.                                         swap(arr,x,y);
  34.                                 }  //交换为的函数,为了提高代码使用率
  35.                         }
  36.                
  37.                 }
  38.         }
  39.         public static void maoPao(int[] arr)
  40.         {
  41.                 for (int x = 0; x < arr.length ;x++ )
  42.                 {
  43.                         for (int y=0; y < arr.length-x-1 ; y++)
  44.                         {
  45.                                 if(arr[y] > arr[y+1])
  46.                                         swap(arr,y,y+1);
  47.                         }
  48.                 }
  49.         }



  50.         public static void main(String[] args)
  51.         {
  52.                 //int[] arr = new int[]{2,4,1,15,3,24,6};
  53.                 int[] arr = {2,4,1,15,3,24,6};
  54.                 printArray(arr);// 排序前
  55.                 xuanZe(arr);
  56.                 printArray(arr);//排序后
  57.                 maoPao(arr);
  58.                 printArray(arr);



  59.         }
  60. }
复制代码

4 个回复

倒序浏览
结果如下

11.png (29.38 KB, 下载次数: 0)

11.png
回复 使用道具 举报
我看了几次都发现代码没有错。不知道为什么。
回复 使用道具 举报
本帖最后由 神之梦 于 2013-5-17 16:00 编辑

if(arr[x] > arr[y] );//进行比较,

这句后面多加了个分号,应该为
if(arr[x] > arr[y] )//进行比较,

找你这个错误确实找了好久。

补充:楼主以后遇到这种情况,可以采用注释部分语句和打印输出的值去查错。
刚我就是在if后面的{}里面加了一条打印语句
System.out.println(arr[x] > arr[y]);
发现不管是true还是false都会执行,才发现你的if后面多加了个分号。

一开始用肉眼确实很难找出错误所在...
回复 使用道具 举报
神之梦 发表于 2013-5-17 15:48
if(arr[x] > arr[y] );//进行比较,

这句后面多加了个分号,应该为

谢谢,问题还真是这里啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马