黑马程序员技术交流社区

标题: 一个比较经典的错误 [打印本页]

作者: a80C51    时间: 2015-8-28 22:22
标题: 一个比较经典的错误
  1. public class mySortArrays
  2. {
  3.         public static void swapNums(int a,int b)
  4.         {
  5.                 int temp;
  6.                 temp = a;
  7.                 a = b;
  8.                 b = temp;
  9.         }

  10.         public static void sortArrays(int[] arr)
  11.         {
  12.                 for(int x=0;x<arr.length-1;x++)
  13.                 {
  14.                         for(int y=x+1;y<arr.length;y++)
  15.                         {
  16.                                 if(arr[x]>arr[y])
  17.                                 {
  18.                                         swapNums(arr[x],arr[y]);
  19.                                 }
  20.                         }
  21.                 }
  22.         }
  23.        
  24.         public static void printArrays(int[] arr)
  25.         {
  26.                 for(int arrIndex:arr)
  27.                 {
  28.                         System.out.print(""+arrIndex+",\t");
  29.                 }
  30.                 System.out.println("");
  31.         }
  32.        
  33.         public static void main(String[] args)
  34.         {
  35.                 int[] a = {4,5,7,2,8,6};
  36.                
  37.                 printArrays(a);
  38.                 sortArrays(a);
  39.                 printArrays(a);
  40.         }
  41. }
复制代码
看看能发现什么问题不?


作者: a80C51    时间: 2015-8-28 22:56

  1. class DataSwap
  2. {
  3.         int a;
  4.         int b;
  5. }

  6. public class mySortArrays
  7. {
  8.         public static void swapNums(DataSwap dw)
  9.         {
  10.                 int temp;
  11.                 temp = dw.a;
  12.                 dw.a = dw.b;
  13.                 dw.b = temp;
  14.         }

  15.         public static void sortArrays(int[] arr)
  16.         {
  17.                 for(int x=0;x<arr.length-1;x++)
  18.                 {
  19.                         for(int y=x+1;y<arr.length;y++)
  20.                         {
  21.                                 if(arr[x]>arr[y])
  22.                                 {
  23.                                         DataSwap dw = new DataSwap();
  24.                                         dw.a=arr[x];
  25.                                         dw.b=arr[y];
  26.                                        
  27.                                         swapNums(dw);
  28.                                        
  29.                                         arr[x] = dw.a;
  30.                                         arr[y] = dw.b;
  31.                                 }
  32.                         }
  33.                 }
  34.         }
  35.        
  36.         public static void printArrays(int[] arr)
  37.         {
  38.                 for(int arrIndex:arr)
  39.                 {
  40.                         System.out.print(""+arrIndex+",\t");
  41.                 }
  42.                 System.out.println("");
  43.         }
  44.        
  45.         public static void main(String[] args)
  46.         {
  47.                 int[] a = {4,5,7,2,8,6};
  48.                
  49.                 printArrays(a);
  50.                 sortArrays(a);
  51.                 printArrays(a);
  52.         }
  53. }
复制代码

修改之后的代码,至于其中的原因,等我学习完一些知识后,再做解答。



另外对于交换数据的函数,各位有没有什么比较简单的写法。


作者: 绅士痞子    时间: 2015-8-28 23:30
Good 我居然一下找不出来,再看看
作者: 何时指点江山    时间: 2015-8-29 00:01
经典的问题哦
作者: JXHIUUI    时间: 2015-8-29 00:05
看不出什么问题,求告知!
作者: 别弄那些没的    时间: 2015-8-29 00:08
问题在哪  
作者: a80C51    时间: 2015-8-29 00:12
各位运行一下,就知道了。不要被表面所迷惑。我这边由于还是不清楚引用的概念,所以,会讲不清楚。先按下不发。待我整理好后,或有高手发现时,自然会还一个真相!
作者: sunsteam    时间: 2015-8-29 00:25
只是不能写this.所以用了这个方法麽?   改个变量名不就好了么? 或者函数都不写成静态不就好了么 这样好麻烦啊
下面这句没看到什么意思  求解释   
                for(int arrIndex:arr)
                {
                        System.out.print(""+arrIndex+",\t");
                }
作者: a80C51    时间: 2015-9-1 22:41
http://bbs.itheima.com/thread-233196-1-1.html
各位可以看看我这边写的一个帖子,今天刚刚整理出来的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2