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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑强强 中级黑马   /  2012-4-6 08:42  /  1891 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class ArrayDemo
{


        public static int  selectSort_1(int[] arr)//选择排序
        {
        for (int x=0;x<arr.length-1 ;x++ )//此处不用遍历到最后一个角标,所以可以改为length-1
          {
                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;
                        }
                }
          }

        for (int x=0;x<6 ;x++ )
       
                 return arr[x];
       
          
        }




        public static void main(String[] args)
        {
                int[] arr={1,5,3,7,9,6};
                System.out.println(arr);
                selectSort_1(arr);
                for (int x=0;x<6 ;x++ )
                {
                        System.out.println("arr["+x+"]="+arr[x]+";");
                }
               


        }
}
各位大神,为什么我的程序运行不出来呢?毕老师说selectSort_1声明为void的类型,那么声明为int类型
能不能做呢??求解

9 个回复

倒序浏览
本帖最后由 宋蕈 于 2012-4-6 08:46 编辑

class ArrayDemo
{


        public static int  selectSort_1(int[] arr)//选择排序       --> 这里的返回改为 int[]
        {
        for (int x=0;x<arr.length-1 ;x++ )//此处不用遍历到最后一个角标,所以可以改为length-1
          {
                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;
                        }
                }
          }

        for (int x=0;x<6 ;x++ )   // 这个是错误的, 你直接  return arr; 就行了。。
        
                 return arr[x];
        
           
        }

回复 使用道具 举报
本帖最后由 姜志钦 于 2012-4-6 08:55 编辑
  1. class ArrayDemo
  2. {


  3.         public static int[]  selectSort_1(int[] arr)//选择排序  还有这里是返回数组 要用int[]
  4.         {
  5.         for (int x=0;x<arr.length-1 ;x++ )//此处不用遍历到最后一个角标,所以可以改为length-1
  6.           {
  7.                 for (int y=x+1;y<arr.length ;y++ )
  8.                 {
  9.                         if(arr[x]>arr[y])
  10.                         {
  11.                                 int temp=arr[x];
  12.                                 arr[x]=arr[y];
  13.                                 arr[y]=temp;
  14.                         }
  15.                 }
  16.           }

  17.                
  18.                  return arr; 这边直接这样就可以了
  19.         
  20.            
  21.         }




  22.         public static void main(String[] args)
  23.         {
  24.                 int[] arr={1,5,3,7,9,6};
  25.                 System.out.println(arr);
  26.                 selectSort_1(arr);
  27.                 for (int x=0;x<6 ;x++ )
  28.                 {
  29.                         System.out.println("arr["+x+"]="+arr[x]+";");
  30.                 }
  31.                


  32.         }
  33. }
复制代码
回复 使用道具 举报
public static int[]  selectSort_1(int[] arr)  定义方法的格式是 修饰符 返回值类型 方法名(函数参数),你可以把排序和遍历写成两个方法来调用
  1. public class  zntx {
  2.         public static void main(String[] args)
  3.         {
  4.                 int[]arr = {3,6,9,1,4,2,5};
  5.                 getarr(arr);
  6.                 bianli(arr);
  7.         }
  8.         public static void getarr(int[]arr)
  9.         {
  10.                 for(int x=0;x<arr.length;x++)
  11.                 {
  12.                         for(int y=0;y<arr.length-1;y++)
  13.                         {
  14.                                 if(arr[x]<arr[y])
  15.                                 {
  16.                                         int temp = arr[y];
  17.                                            arr[y]=arr[x];
  18.                                            arr[x]=temp;
  19.                                 }
  20.                         }
  21.                 }
  22.         }
  23.         public static void bianli(int[]arr)
  24.         {
  25.                 for(int x=0;x<arr.length;x++)
  26.                 {
  27.                         System.out.print(arr[x]);
  28.                 }
  29.         }
  30. }
复制代码
回复 使用道具 举报
宋蕈 发表于 2012-4-6 08:45
class ArrayDemo
{

for (int x=0;x<6 ;x++ )   // 这个是错误的, 你直接  return arr; 就行了。。
这样改会出现如上错误

6.JPG (13.6 KB, 下载次数: 40)

这是输出结果

这是输出结果
回复 使用道具 举报
尹丽峰 发表于 2012-4-6 09:37
public static int[]  selectSort_1(int[] arr)  定义方法的格式是 修饰符 返回值类型 方法名(函数参数) ...

谢谢,这个问题排序我是解决了,不过那个毕老师说selectSort_1声明为void的类型,那么声明为int类型
能不能做呢??求解
回复 使用道具 举报
排序就是把数组重新排一下,其实直接定义成void型就好了   你非要return  那就锐变return个整数  和数组无关的整数
回复 使用道具 举报
弟弟,毕老师为什么要你定义成Void?void 又是什么意思?
按照毕老师的讲法,void是返回值类型,对不?
你selectSort_1这个方法的返回值是什么?你有没有确定?要是确定了就增加一个return +变量名,要么你就说不知道是什么返回类型 直接写个void。
你现在返回值类型是int,但是又没有明确返回值,所以才会编译不过啊。
你改一下吧。问题不大,但是这个基础一定要弄清楚,弄清返回值类型是起什么作用的。
回复 使用道具 举报
欧阳才志 发表于 2012-4-6 09:48
弟弟,毕老师为什么要你定义成Void?void 又是什么意思?
按照毕老师的讲法,void是返回值类型,对不?
你se ...

谢谢,您老的提携了
回复 使用道具 举报
{:soso_e106:}{:soso_e110:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马