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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© EDDY_Liang 中级黑马   /  2014-5-23 16:38  /  6408 人查看  /  30 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 EDDY_Liang 于 2014-5-24 14:20 编辑

class day5555
/*
运用冒泡排序的方式给数组arr[6,5,7,1,4,9,2]进行排列,
不知道为什么,编译没有错误,但是运行的时候数组排列前和排列后的顺序都一样,想了半天也没想出来是什么回事,各位大哥帮忙看看把,我是新手
*/

{
        public static void main(String[] args)
        {
        int [] arr={6,5,7,1,4,9,2};
        
        print(arr);   \\排列前
        bubblesort(arr);
        print(arr);   \\排列后
        }
        public static void print(int arr[])
        {
                for(int a=0;a<arr.length;a++)
                {
                        System.out.print(arr[a]);
                }
                System.out.println();
        }
        public static void bubblesort(int arr[])
        {
                for(int x =0;x<arr.length-1;x++)
                {
                        
                        for(int y=0;y<arr.length-x-1;y++)
                        {
                                if(arr[y]<arr[y+1])
                                {
                                        int d=arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y]=d;        
                                }        
                        }
                }
        }
}
        

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 欢迎新手朋友把问题带到论坛上学习~.

查看全部评分

30 个回复

倒序浏览
自己给自己顶一下啊,有谁可以解答下吗??
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 int[] arr = { 6, 5, 7, 1, 4, 9, 2 };

  3.                 print(arr);
  4.                 bubblesort(arr);
  5.                 print(arr);
  6.         }

  7.         public static void print(int arr[]) {
  8.                 for (int a = 0; a < arr.length; a++) {
  9.                         System.out.print(arr[a]);
  10.                 }
  11.                 System.out.println();
  12.         }

  13.         public static void bubblesort(int arr[]) {
  14.                
  15.                 for (int x = 0; x < arr.length - 1; x++) {

  16.                         for (int y = 0; y < arr.length - x - 1; y++) {
  17.                                 if (arr[y] < arr[y + 1]) {
  18.                                         int d = arr[y];
  19.                                         arr[y] = arr[y + 1];
  20.                                         arr[y+1] = d;
  21.                                 }
  22.                         }
  23.                 }
  24.         }
复制代码


你太粗心了啊   那个是arr[y+1]=d;啊   下次如果遇到这种问题可以自己debug测试 一步一步看 debug很有用的

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主  你那代码中的  换算写错了, int d=arr[y];    arr[y]=arr[y+1];  arr[y]=d;    你要最后的arr[y] 改成  arr[y+1]才行。
回复 使用道具 举报
张辉玉 发表于 2014-5-23 17:10
楼主  你那代码中的  换算写错了, int d=arr[y];    arr[y]=arr[y+1];  arr[y]=d;    你要最后的arr[y] 改 ...

晕,折腾了我一个小时,谢谢,下次一定注意这些细节
回复 使用道具 举报
Aron 发表于 2014-5-23 17:08
你太粗心了啊   那个是arr[y+1]=d;啊   下次如果遇到这种问题可以自己debug测试 一步一步看 debug很有用 ...

debug是什么东西啊,我现在都是用记事本一个一个敲的。。。:L
回复 使用道具 举报
Aron 中级黑马 2014-5-23 17:51:32
7#
EDDY_Liang 发表于 2014-5-23 17:23
debug是什么东西啊,我现在都是用记事本一个一个敲的。。。

这样啊   你才开始接触编程是不  我觉得其实用记事本敲可以加强对代码的记忆 但是出错了不好找 你可以去下载一个软件叫Eclipse里面功能很强大 也能学到很多新东西 那个不大 上手也简单  你可以先用中文版的 不过建议最好熟悉下英文版 又不懂得可以问我 加QQ 私聊 也可以百度 谷歌都有的哈
回复 使用道具 举报
Aron 中级黑马 2014-5-23 17:54:05
8#
Aron 发表于 2014-5-23 17:51
这样啊   你才开始接触编程是不  我觉得其实用记事本敲可以加强对代码的记忆 但是出错了不好找 你可以去 ...

对了补充下  你问的debug其实是一个追踪程序运行检查系统数据的工具程序  你可以百度下有很详细的解释
回复 使用道具 举报
首先复制了你的代码,编译没通过,一看注释的//写反了,可见楼主的粗心大意,后来编译运行看结果然后查找问题,又发现楼主下面代码的地方赋值写错了,如下:
  1. class day5555
  2. /*
  3. 运用冒泡排序的方式给数组arr[6,5,7,1,4,9,2]进行排列,
  4. 不知道为什么,编译没有错误,但是运行的时候数组排列前和排列后的顺序都一样,想了半天也没想出来是什么回事,各位大哥帮忙看看把,我是新手
  5. */

  6. {
  7.         public static void main(String[] args)
  8.         {
  9.         int [] arr={6,5,7,1,4,9,2};
  10.       
  11.         print(arr);   //排列前
  12.         bubblesort(arr);
  13.         print(arr);   //排列后
  14.         }
  15.         public static void print(int arr[])
  16.         {
  17.                 for(int a=0;a<arr.length;a++)
  18.                 {
  19.                         System.out.print(arr[a]);
  20.                 }
  21.                 System.out.println();
  22.         }
  23.         public static void bubblesort(int arr[])
  24.         {
  25.                 for(int x =0;x<arr.length-1;x++)
  26.                 {
  27.                        
  28.                         for(int y=0;y<arr.length-x-1;y++)
  29.                         {
  30.                                 if(arr[y]<arr[y+1])
  31.                                 {
  32.                                         int d=arr[y];
  33.                                         arr[y]=arr[y+1];
  34.                                         arr[y+1]=d;  //此处你粗心了,写成arr[y]=d;     
  35.                                 }      
  36.                         }
  37.                 }
  38.         }
  39. }
复制代码

另外给楼主提点建议,写代码的时候一定注意代码的可读性和规范性,养成良好的编程习惯,因为我们以后写代码不只是给我们自己看的,比如上面代码中,定义一个临时变量就可以定义成int temp,而不是写d,类名可以写成BubbleSortTest什么的,希望能帮到你,加油!

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
想飞的鱼 发表于 2014-5-23 21:31
首先复制了你的代码,编译没通过,一看注释的//写反了,可见楼主的粗心大意,后来编译运行看结果然后查找问 ...

嗯,好的,我以后会注意这点的,谢谢啊
回复 使用道具 举报
看看看看 ~~~~大家一起努力
回复 使用道具 举报
:L:L!
晕.......
回复 使用道具 举报
27ZJQ 来自手机 中级黑马 2014-5-31 09:47:28
13#
学习了。
回复 使用道具 举报
已经有人回答了
回复 使用道具 举报
Lex 中级黑马 2014-5-31 10:24:07
15#
这类小问题是新人都会犯的,继续加油吧,楼主
回复 使用道具 举报
27ZJQ 中级黑马 2014-6-11 23:01:20
16#
EDDY_Liang 发表于 2014-5-23 17:23
debug是什么东西啊,我现在都是用记事本一个一个敲的。。。

我也用记事本呢。。。
回复 使用道具 举报
大家一起努力
回复 使用道具 举报
过来看看,加点硬币
回复 使用道具 举报
LZ不用管我,我是来水黑币的
回复 使用道具 举报
多练, 多理解,多请教,,,,度娘,知道、贴吧、各种论坛。总有能解决的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马