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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Mr.高 于 2014-5-29 20:11 编辑

class  Fanzhuan
{
        public static void main(String[] args)
        {
               
                int[] arr={12,13,23,35,46,66,76,87};
                int swep=fanzhuan(arr);
                System.out.println(swep);
        }
        public static void fanzhuan(int[] arr)
                {for(int x=0,int y=arr.length-1;x<y;x++,y--)
                  
                        huanwei(arr,x,y);        
                        
                }
               
                public static void huanwei(int[] arr,int a,int b)
                        {        int i=arr[a];
                                arr[a]=arr;
                                arr=i;
                        
                        }
}

24 个回复

倒序浏览
class  Fanzhuan
{
        public static void main(String[] args)
        {
               
                int[] arr={12,13,23,35,46,66,76,87};
                /* int swep=fanzhuan(arr);   这个方法fanzhuan(int[] arr)没有返回值啊,编译的时候就会出错。在java中数组做为函数的参数传递是引用传递 。
                System.out.println(swep);   上面都错了,这边就更加的错了                */
               //这样改吧
               for(int x = 0 ; x < arr.length ; x++){
                       Sytem.out.print(arr[x]);
               }
               System.out.println();
        }
        public static void fanzhuan(int[] arr)
                {for(int x=0,int y=arr.length-1;x<y;x++,y--)
                  
                        huanwei(arr,x,y);        
                        
                }
               
                public static void huanwei(int[] arr,int a,int b)
                        {        int i=arr[a];
                                arr[a]=arr;
                                arr=i;
                        
                        }
}
回复 使用道具 举报 0 1
chang清 发表于 2014-5-28 14:55
class  Fanzhuan
{
        public static void main(String[] args)

为什么是for循环那出现了问题,麻烦运行一下看看
回复 使用道具 举报
要翻转一个数组不用这么麻烦吧,两行就行了
for(int y=arr.length-1;y>=0;y--)
{
System.out.println(arr[y]);
}
回复 使用道具 举报
可以这样修改:

public class Fanzhuan {
          public static void main(String[] args)
      {
              
              int[] arr={12,13,23,35,46,66,76,87};
              int[] swep=fanzhuan(arr);
              System.out.println(swep);
              for(int a:arr)
              {
                      System.out.println(a);
              }
      }
      public static int[] fanzhuan(int[] arr)
              {for(int x=0, y=arr.length-1;x<y;x++,y--)// y前面得int去掉就可以了
               
                     huanwei(arr,x,y);        
                   return arr;
              }
              
              public static void huanwei(int[] arr,int a,int b)
                      {       int i=arr[a];
                              arr[a]=arr[b];
                              arr[b]=i;
                      }
}
回复 使用道具 举报
汤姆纳斯 发表于 2014-5-28 15:33
为什么是for循环那出现了问题,麻烦运行一下看看

因为不能这样定义:
int a, int b;
只能是int a ,b;
或者int a; int b;
回复 使用道具 举报
  int swep=fanzhuan(arr);
  public static void fanzhuan(int[] arr)
我截取了你程序中的两行代码,你比对一下,
一个返回值类型为void的函数(fanzhuan(int[] arr))被调用后赋给了一个int类型的变量?
这样不可以吧!
稍加改动就OK了!


回复 使用道具 举报
shisaa 中级黑马 2014-5-28 21:40:45
8#
本帖最后由 shisaa 于 2014-5-28 22:02 编辑

同楼主一样,也刚开始学习。
看楼主代码发现两个问题,楼上的前辈们也做了回答:
1.方法的返回值。楼主可能没有注意到定义方法的修饰符。  
public static void fanzhuan(int[] arr) :
public 访问权限,公共方法全局访问; static 静态方法修饰符号;void 返回值类型,void表示无返回。
2.变量的定义。
  {for(int x=0,int y=arr.length-1;x<y;x++,y--)
int变量定义的几种不同表现:
int a ,b;
或者    int a; int b;

另外,希望楼主能注意代码的规范(如对齐,采用驼峰法命名等FanZhuan),以方便阅读。

再另外,写了个返回数组的翻转方法以做交流。
/**
将一个数组的顺序颠倒,并输入。
*/
class  FanZhuanDemo
{
        public static void main(String[] args)
        {

                int[] arr={12,13,23,35,46,66,76,87};//定义数组
                arr=FanZhuan(arr);
                for(int x=0;x<arr.length;x++)
                {
                        System.out.println(arr[x]);
                }
        }
        //这个方法将传入的数组参数翻转
          public static int[] FanZhuan(int[] arr)
        {
                int[] result=new int[arr.length];
                for(int x=0;x<arr.length;x++)
                {
                        result[arr.length-1-x]=arr[x];
                }
                return result;
        }
}

回复 使用道具 举报
qfch 中级黑马 2014-5-28 22:06:05
9#
来学习的啊
回复 使用道具 举报
code2014 发表于 2014-5-28 18:13
可以这样修改:

public class Fanzhuan {

帅气,谢谢啊!!!!!!
回复 使用道具 举报
shisaa 发表于 2014-5-28 21:40
同楼主一样,也刚开始学习。
看楼主代码发现两个问题,楼上的前辈们也做了回答:
1.方法的返回值。楼主可能 ...

恩恩,发现你比我认真多了,未来的大牛
回复 使用道具 举报
Alan_Kwan 发表于 2014-5-28 18:38
因为不能这样定义:
int a, int b;
只能是int a ,b;

不错!学习了!!!!
回复 使用道具 举报
我也来凑凑热闹刚学到二维数组,试试水了。

  1. /*
  2. 需求:数组反转
  3. 思路:借用变量临储,将数组数值镜像换位;
  4. */
  5. class day3_4
  6. {       
  7.         public static void fanzhuan(int[] arr)
  8.         {
  9.                 for(int x=0;x<(arr.length-1)/2+1;x++ )
  10.                 {                       
  11.                         int temp=arr[x];
  12.                                 arr[x]=arr[arr.length-x-1];
  13.                                 arr[arr.length-x-1]=temp;                                       
  14.                 }
  15.         }

  16.         //主函数
  17.         public static void main(String[] args)
  18.         {       
  19.                 int[] arr={23,45,6,71,31,53,15,83,94};
  20.                 printArray(arr);
  21.                 fanzhuan(arr);//载入反转;
  22.                 printArray(arr);
  23.         }
  24.        
  25.         //美化结果,可弃之;
  26.         public static void printArray(int[] arr)
  27.         {
  28.                 System.out.print("[");
  29.                 for(int j=0;j<arr.length;j++)
  30.                 {
  31.                         if(j!=arr.length-1)
  32.                                 System.out.print(arr[j]+",");
  33.                         else
  34.                                 System.out.println(arr[j]+"]");
  35.                 }
  36.         }
  37. }
复制代码
回复 使用道具 举报
chang清 发表于 2014-5-28 14:55
class  Fanzhuan
{
        public static void main(String[] args)

这个修改是错误的。你试运行了没?
回复 使用道具 举报
zimi626 发表于 2014-5-30 22:32
这个修改是错误的。你试运行了没?

public 啊
回复 使用道具 举报
zimi626 发表于 2014-5-30 22:32
这个修改是错误的。你试运行了没?

还有 ,你中间有些单词打错了的 ,不要复制我的代码 ,我是复制你的代码修该的
回复 使用道具 举报
zimi626 发表于 2014-5-30 22:32
这个修改是错误的。你试运行了没?

对了,补充下我没运行。
public class Test{
        public static void main(String[] args){
                int[] arr = { 12, 13, 23, 35, 46, 66, 76, 87 };
                /*打印反转前数组*/
                printArray(arr);
                /*反转*/
                reverse(arr);
                System.out.println();/*换行*/
                /*打印反转后数组*/
                printArray(arr);
               
        }
        public static void reverse(int[] arr){
                /*反转函数*/
                for (int i = 0; i < (arr.length-1)/2; i++) {
                        if(i<(arr.length)/2){
                                swap(arr,i,arr.length-i-1);
                        }
                }
               
        }
        private static void swap(int[] arr, int i, int j) {
                /*执行交换,在这个例子里面这个函数没必要独立出来*/
                int temp = arr;
                arr = arr[j];
                arr[j] = temp ;
        }
       
        public static void printArray(int[] arr){
                /*打印数组*/
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr+",");
                }
        }
}
回复 使用道具 举报
第一个:返回值的问题:
第二个:数组的角标你没有写完
这样就好了
package com.itheima;

class Fanzhuan {
        public static void main(String[] args) {

                int[] arr = { 12, 13, 23, 35, 46, 66, 76, 87 };
                int[] swep = fanzhuan(arr);
                System.out.println(swep);
        }

        public static int[] fanzhuan(int[] arr) {
                for (int x = 0, y = arr.length - 1; x < y; x++, y--)

                        huanwei(arr, x, y);
                return arr;

        }

        public static void huanwei(int[] arr, int a, int b) {
                int i = arr[a];
                arr[a] = arr[b];
                arr[b] = i;

        }
}
回复 使用道具 举报
你打印的是一个int[]的地址,没错的,这个肯定不是你要的结果,代码是没有问题,你肯定想打印出每个元素对吧?package com.itheima;

class Fanzhuan {
        public static void main(String[] args) {

                int[] arr = { 12, 13, 23, 35, 46, 66, 76, 87 };
                int[] swep = fanzhuan(arr);
                System.out.println(swep);
        }

        public static int[] fanzhuan(int[] arr) {
                for (int x = 0, y = arr.length - 1; x < y; x++, y--)

                        huanwei(arr, x, y);
                return arr;

        }

        public static void huanwei(int[] arr, int a, int b) {
                int i = arr[a];
                arr[a] = arr[b];
                arr[b] = i;

        }
}
回复 使用道具 举报
完美解决,加一个StringBuilder 就可以了
package com.itheima;

class Fanzhuan {
        public static void main(String[] args) {

                int[] arr = { 12, 13, 23, 35, 46, 66, 76, 87 };
                int[] swep = fanzhuan(arr);
                StringBuilder sbBuilder = new StringBuilder();
                for(int i: swep){
                        sbBuilder.append(i);
                        if(i!=swep[swep.length-1]){
                                sbBuilder.append(" ");//加一个空格美观
                        }
                }
                System.out.println(sbBuilder.toString());
        }

        public static int[] fanzhuan(int[] arr) {
                for (int x = 0, y = arr.length - 1; x < y; x++, y--)

                        huanwei(arr, x, y);
                return arr;

        }

        public static void huanwei(int[] arr, int a, int b) {
                int i = arr[a];
                arr[a] = arr[b];
                arr[b] = i;

        }
}
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马