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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐宏波 初级黑马   /  2012-3-12 19:52  /  2266 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐宏波 于 2012-3-19 12:48 编辑

class SelectSort
{
        public static void SelectSort(int[] arr)
        {
               
                for(int x=0;x<arr.length-1;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 printArray(int[] arr)        {
                        for(int x=0;x<arr.length;x++)
                        {
                                if(x!=arr.length)
                                {
                                        System.out.print(arr[x]+", ");
                                }
                                else
                                        System.out.println(arr[x]);
                                               
                        }
        }

        public static void main(String[] args)
        {
                int[] arr=new int[]{1,2,3,8,7,6,12,10};
                printArray(arr);
                SelectSort(arr);
                printArray(arr);       
        }
}


数组按从小到大的顺序排列,然后与未排序之前一起打印出来,分两行..但我打印完不换行,都在一行里了..可是我是用的println啊,,帮我看下怎么回事了.我弄了老半天了

7 个回复

倒序浏览
我吃饭去,,希望谁帮我看一下啊,,回来不行我就得发群里了..{:soso_e118:}
回复 使用道具 举报
for(int x=0;x<arr.length;x++)
                        {
                                if(x!=arr.length)
                                {
                                        System.out.print(arr[x]+", ");
                                }
                                else
                                        System.out.println(arr[x]);
                                                
                        }
错在这个里面,x永远不可能等于arr.length所以这个System.out.println(arr[x]);根本没有执行
  if(x!=arr.length)换成  if(x!=arr.length-1)就好了。

评分

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

查看全部评分

回复 使用道具 举报
class SelectSort
{
         public static void SelectSort(int[] arr)
         {
                 
                for(int x=0;x<arr.length-1;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 printArray(int[] arr)        {
                         for(int x=0;x<arr.length;x++)
                         {
                                 if(x!=arr.length)   //  你这句写得不合理,  你想最后一个换行 那么应该是  x != arr.length-1   要不你换行的那句根本不执行
                                 {
                                         System.out.print(arr[x]+", ");
                                 }
                                 else
                                         System.out.println(arr[x]);
                                                
                        }
         }

        public static void main(String[] args)
         {
                 int[] arr=new int[]{1,2,3,8,7,6,12,10};
                 printArray(arr);
                 SelectSort(arr);
                 printArray(arr);        
        }
}

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 刘宁 于 2012-3-12 20:11 编辑

public static void printArray(int [] arr)
        {
                System.out.print("[");
                for ( int x=0; x<arr.length; x++)
                {       
                        if (x!= arr.length-1)
                                System.out.print(arr[x]+", ");
                        else
                                System.out.println(arr[x]+"]");
                }
       
        }
这个是正确的方式。
if(x!=arr.length) 不对。
欢迎交流指正。
回复 使用道具 举报
public static void printArray(int[] arr)        {
                        for(int x=0;x<arr.length;x++)
                        {
                                if(x!=arr.length)
                                {
                                        System.out.print(arr[x]+", ");
                                }
                                else
                                        System.out.println(arr[x]);
                                               
                        }
        }
当x==arr.length时,for循环里的条件已经不成立了,已经停止了for循环。自然执行不到换行语句。把判断条件改为x!=arr.length-1

评分

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

查看全部评分

回复 使用道具 举报
子曰:楼上的同学说的对啊!
数组的长度是arr.length,但是数组的下标是从0开始的,所以最后一个元素的下标是arr.length-1  !
你就错在把数组的最后一个元素下标当成arr.length了。
回复 使用道具 举报
张希强 发表于 2012-3-12 20:00
for(int x=0;x

{:2_30:}懂了,谢谢各位了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马