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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下边一段代码一共传进去了九个元素,但是结果出现了是个元素,元素1被写了两次,而且有一个元素没有被排序放在了最后,还有就是在排列数组的外边还有一个元素就是那个没有被排序的元素,请问这是为什么?
/*
需求:对指定的数组进行操作实现从小到大的排序
思路:
1需要写一个for语句嵌套方法来实现数组的比较
2需要写一个遍历方法来实现数组的遍历打印
3最后使用主函数调用
步骤
1写for嵌套的循环
不需要返回值,有未知的内容参与运算
2写遍历的循环
不需要返回值,有未知的内容参与运算
3主函数给一个数组开始调用
*/
class  arraysort
{
        public static void compare(int[] arr)
        {
                for (int x=0;x<arr.length ;x++ )
                {
                        for(int y=x+1;y<arr.length-1;y++)
                        {
                                if(arr[x]>arr[y])
                                {
                                                int        temp=arr[x];
                                                        arr[x]=arr[y];
                                                        arr[y]=temp;
                                }
                        }
                }
        }
        public static void sort(int[] arr)
        {
                for(int b=0;b<arr.length;b++)
                {
                        if(b==0)
                                {
                        System.out.print("{"+arr[b]+",");
                        }
                        if(b==arr.length-1){
                        System.out.print(arr[b]+"}");
                        }
                        System.out.print(arr[b]+",");
                }
                System.out.println();
        }
        public static void main(String[] args)
        {
                int[] a={1,2,3,3,54,56,3,46,3};
                sort(a);
                compare(a);
                sort(a);
        }
}

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

3 个回复

倒序浏览
运行了下,是lzsort(int[] arr)方法打印顺序有问题,稍作修改如下:
public static void sort(int[] arr)
    {
            for(int b=0;b<arr.length;b++)
            {
                    if(b==0)
                            {
                    System.out.print("{");
                    }
                    
                    System.out.print(arr[b]+",");
                    if(b==arr.length-1){
                        System.out.print("}");
                        }
            }
            System.out.println();
    }

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 李明伟 于 2012-3-11 18:25 编辑

遍历错误是  if  else语句使用不正确,比较时第二个for循环没有比较到最后一个,不能减1


正确代码:
public class test
{
        public static void compare(int[] arr)
        {
                for (int x = 0; x < arr.length; x++)
                {
                        for (int y = x + 1; y < arr.length; y++)
                        {
                                if (arr[x] > arr[y])
                                {
                                        int temp = arr[x];
                                        arr[x] = arr[y];
                                        arr[y] = temp;
                                }
                        }
                }
        }

        public static void sort(int[] arr)
        {
                for (int b = 0; b < arr.length; b++)
                {
                        if (b == 0)
                        {
                                System.out.print("{" + arr + ",");
                        } else if (b == arr.length - 1)
                        {
                                System.out.print(arr + "}");
                        } else
                                System.out.print(arr + ",");
                }
                System.out.println();
        }

        public static void main(String[] args)
        {
                int[] a =
                { 1, 2, 3, 3, 54, 56, 3, 46, 3 };
                sort(a);
                compare(a);
                sort(a);
        }
}

输出结果:
{1,2,3,3,54,56,3,46,3}
{1,2,3,3,3,3,46,54,56}

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
已解决谢谢各位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马