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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 唯爱 于 2014-4-5 13:08 编辑

请大家帮忙看看:  
class ArrayTool
{
        public void getIndex(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])
                                        swap(arr,x,y);
                        }
                }
        }
        private void swap(int [] arr,int a ,int b)
        {
                int temp = arr[a];
                arr[a] = arr;
                arr = temp;
        }
}                                                                                    
class ArrayToolDemo
{
        public static void main(String[] args)
        {
                int [] arr = {2,5,26,4,8};

                ArrayTool tool = new  ArrayTool();
                int getIndex = tool.getIndex(arr);
                System.out.println("getIndex="+getIndex);
        }
}
如果不往 tool.getIndex(arr);中传值,编译又会提示实际参数和形式参数列表长度不同。

QQ截图20140405130808.png (4.71 KB, 下载次数: 25)

QQ截图20140405130808.png

7 个回复

正序浏览
谢了,哥们们。终于弄懂了
回复 使用道具 举报
唯爱 发表于 2014-4-5 13:42
我想到过修改class ArrayTool中的 void 修改成 int[],可以解释下为什么要用for呢 ...

因为你直接打印getIndex是数组的地址,不是数组存储的内容。
回复 使用道具 举报
class ArrayTool
{
         public int[] getIndex(int [] arr) //错误1:应该有返回的类型的
         {
                 for(int x = 0;x<arr.length-1;x++)
                 {
                         for(int y = x+1;y<arr.length;y++)
                         {
                                 if(arr[x]>arr[y])
                                         swap(arr,x,y);
                         }
                 }
                                return arr;
         }
         private void swap(int[] arr,int a ,int b)
         {
                 int temp = arr[a];
                 arr[a] = arr[b];
                 arr[b] = temp;
         }
}                                                                                    
class ArrayToolDemo
{
         public static void main(String[] args)
         {
                 int [] arr = {2,5,26,4,8};

                 ArrayTool tool = new  ArrayTool();
                 int[] getIndex = tool.getIndex(arr);
                 for(int i=0;i<arr.length;i++){   //循环输出
                 System.out.print(arr[i] + " ");
                 }
                 System.out.println() ;
                 System.out.println("getIndex=" + getIndex) ; //这里输出对象的地址
         }
}
/*因为你的那个方法是无返回值的,所以说,有错误,类型不兼容或别的*/
回复 使用道具 举报 1 0
759345779 发表于 2014-4-5 13:23
按照你的意思好像是要实现排序对吗?如果是的话我说说我的建议,首先在ArrayTool类中你定义的getIndex方法 ...

我想到过修改class ArrayTool中的 void 修改成 int[],可以解释下为什么要用for呢
回复 使用道具 举报
方括号显示不出来,是这样:System.out.println("getIndex="+getIndex[i]);

www.png (2.23 KB, 下载次数: 19)

www.png

www.png (2.23 KB, 下载次数: 26)

www.png
回复 使用道具 举报
可以用for语句加上System.out.println("getIndex="+getIndex);将结果打印。改为:可以用for语句加上System.out.println("getIndex="+getIndex);将结果打印。
回复 使用道具 举报
按照你的意思好像是要实现排序对吗?如果是的话我说说我的建议,首先在ArrayTool类中你定义的getIndex方法返回类型为void,而在使用的时候你用的是 int getIndex = tool.getIndex(arr);类型错误了,应将方法定义中返回值类型改为int[],因为是数组。最后打印时候不能直System.out.println("getIndex="+getIndex);这样是打印不出每个排序后的元素的,可以用for语句加上System.out.println("getIndex="+getIndex);将结果打印。修改后的代码如下:
  1. class ArrayTool
  2. {
  3.         public int[] getIndex(int [] arr)
  4.         {
  5.                 for(int x = 0;x<arr.length-1;x++)
  6.                 {
  7.                         for(int y = x+1;y<arr.length;y++)
  8.                         {
  9.                                 if(arr[x]>arr[y])
  10.                                         swap(arr,x,y);
  11.                         }
  12.                                                
  13.                 }
  14.                                 return arr;
  15.         }
  16.         private void swap(int [] arr,int a ,int b)
  17.         {
  18.                 int temp = arr[a];
  19.                 arr[a] = arr[b];
  20.                 arr[b] = temp;
  21.         }
  22. }
  23. class ArrayToolDemo
  24. {
  25.         public static void main(String[] args)
  26.         {
  27.                 int [] arr = {2,5,26,4,8};

  28.                 ArrayTool tool = new  ArrayTool();
  29.                 int[] getIndex = tool.getIndex(arr);
  30.                                 for(int i=0;i<getIndex.length;i++)
  31.                 System.out.println("getIndex="+getIndex[i]);
  32.         }
  33. }
复制代码


不知道是不是你想要的答案
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马