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 个回复

正序浏览
学习了,楼主大牛啊
回复 使用道具 举报
zimi626 发表于 2014-5-31 22:52
代码依然无法运行!
你回帖后,楼下有个仁兄给了你点意见,很好的说明了问题。
再就是,单行注释还是建议 ...

之前我是运行过的 ,你说不能运行的原因是 发帖的时候数组的角标不知道怎么就没了 。我用多行注释就是防止论坛自动换行导致注释变成了程序的错误代码。
回复 使用道具 举报
chang清 发表于 2014-5-31 19:44
对了,补充下我没运行。
public class Test{
        public static void main(String[] args){

代码依然无法运行!
你回帖后,楼下有个仁兄给了你点意见,很好的说明了问题。
再就是,单行注释还是建议用//
回复 使用道具 举报
结贴吧!
回复 使用道具 举报
运行的结果:
87 76 66 46 35 23 13 12
回复 使用道具 举报
完美解决,加一个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;

        }
}
回复 使用道具 举报
你打印的是一个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;

        }
}
回复 使用道具 举报
第一个:返回值的问题:
第二个:数组的角标你没有写完
这样就好了
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;

        }
}
回复 使用道具 举报
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+",");
                }
        }
}
回复 使用道具 举报
zimi626 发表于 2014-5-30 22:32
这个修改是错误的。你试运行了没?

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

public 啊
回复 使用道具 举报
chang清 发表于 2014-5-28 14:55
class  Fanzhuan
{
        public static void main(String[] args)

这个修改是错误的。你试运行了没?
回复 使用道具 举报
我也来凑凑热闹刚学到二维数组,试试水了。

  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. }
复制代码
回复 使用道具 举报
Alan_Kwan 发表于 2014-5-28 18:38
因为不能这样定义:
int a, int b;
只能是int a ,b;

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

恩恩,发现你比我认真多了,未来的大牛
回复 使用道具 举报
code2014 发表于 2014-5-28 18:13
可以这样修改:

public class Fanzhuan {

帅气,谢谢啊!!!!!!
回复 使用道具 举报
qfch 中级黑马 2014-5-28 22:06:05
9#
来学习的啊
回复 使用道具 举报
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;
        }
}

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


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