黑马程序员技术交流社区

标题: 大神看过来,帮忙解决这个代码问题 [打印本页]

作者: 走遍世界找寻你    时间: 2013-11-1 22:41
标题: 大神看过来,帮忙解决这个代码问题
本帖最后由 走遍世界找寻你 于 2013-11-19 20:28 编辑

class PersonDemo1 {
        public static void main(String[] args) {
                int[] temp={1,4,7,9,13,34,45,66,70};
                System.out.println(arrayRev(temp));
               
        }
public static void arrayRev(int[] arr) {
                for (int x = 0;x<arr.length/2 ;x++ ) {
                        int temp = arr[x];
                        arr[x] = arr[arr.length-1-x];
                        arr[arr.length-1-x] = temp;
                }
        }

为什么变异通不过,提示输出语句为空?
作者: 不抛弃不放弃    时间: 2013-11-1 22:55
你怎么少一个 大括号
作者: 不抛弃不放弃    时间: 2013-11-1 22:57
你那个int[]arr 是什么 他有多少长度啊  你这个写的代码有问题 这是完整的代码按摩
作者: 魏-玉-彪    时间: 2013-11-1 23:03
  1. class PersonDemo1 {
  2.         public static void main(String[] args) {
  3.                 int[] temp={1,4,7,9,13,34,45,66,70};
  4.                 System.out.println(arrayRev(temp));  //这里打印输出的是arrayRev(temp) 的返回值,

  5. //因为返回的数组所以,输出的是arrayRev(temp) 的内存地址
  6.                
  7.         }
  8. public static int[] arrayRev(int[] arr) {    //这里,用void 修饰表示无返回值类型,
  9. 与前面的打印语句冲突//可改为反回数组类
  10.                 for (int x = 0;x<arr.length/2 ;x++ ) {
  11.                         int temp = arr[x];
  12.                         arr[x] = arr[arr.length-1-x];
  13.                         arr[arr.length-1-x] = temp;
  14.                 }

  15.                 return arr;// 这里要有反回值
  16.         }
  17. }

复制代码

作者: 卑微の小幸福    时间: 2013-11-1 23:16
这肯定不是完整代码!这时反转对不?你少了遍历的代码?
class Test2 {
        public static void main(String[] args) {
                int[] temp = {1,4,7,9,13,34,45,66,70};
            arrayRev(temp);
                for (int x = 0;x <temp.length;x++ ) {
                        System.out.println(temp[x]);
                }
       
        }
        public static void arrayRev(int[] arr){
                for (int x = 0;x<arr.length/2;x++) {
                        int temp = arr[x];
                        arr[x] = arr[arr.length-1-x];
                        arr[arr.length-1-x] = temp;
                }
        }
       
}
作者: 王东    时间: 2013-11-1 23:20
你这段代码是有几处错误

class PersonDemo1 {
        public static void main(String[] args) {
                int[] temp = { 1, 4, 7, 9, 13, 34, 45, 66, 70 };
                System.out.println(arrayRev(temp));    //如果这样输出的话,输出的是这个数组的地址,
                                                                                 //如果想输出数组中的值,建议遍历输出或者Arrays.toString(arrayRev(temp));

        }

        public static int[] arrayRev(int[] arr) {   //既然前面定义在输出语言中,这个不能返回为void,应该返回int[]
                for (int x = 0; x < arr.length / 2; x++) {
                        int temp = arr[x];
                        arr[x] = arr[arr.length - 1 - x];
                        arr[arr.length - 1 - x] = temp;
                }
                return arr;     // 返回一个数组
        }
}  //最后这里少一个    }
作者: 明月几时有    时间: 2013-11-2 20:51
楼主,你最大的问题就是打印数组要用遍历,不能直接打印,直接打印出来的只是地址值,楼上几位说的很清楚了。另外补充一种方法,希望对楼主有用。
class Demo1 {

        /**
         * @param args
         */
        public static void main(String[] args) {                //数组反转
                int[] arr ={1,2,3,4,5,6,7};
                revArray1(arr);                                                               
                revArray2(arr);
                printArray(arr);
        }

        private static void revArray1(int[] arr) {                //反转方法一
                for(int x=0;x<arr.length/2;x++){
                        int temp=arr[x];
                        arr[x]=arr[arr.length-1-x];
                        arr[arr.length-1-x]=temp;
                }
        }
        public static void revArray2(int[] arr){                //反转方法二
                for(int start=0,end=arr.length-1;start<end;start++,end--){
                        int temp=arr[start];
                        arr[start]=arr[end];
                        arr[end]=temp;
                }
        }
        public static void printArray(int[] arr) {                //打印方法:遍历
                for(int x=0;x<arr.length;x++){
                        System.out.print(arr[x]);
                }
        }

}
作者: 走遍世界找寻你    时间: 2013-11-3 20:38
谢谢各位的热情回答我知道怎么回事了
作者: 冯国强    时间: 2013-11-3 22:03
public static void arrayRev(int[] arr) {
                 for (int x = 0;x<arr.length/2 ;x++ ) {
                         int temp = arr[x];
                         arr[x] = arr[arr.length-1-x];
                         arr[arr.length-1-x] = temp;
                 }
         }
以上方法参数是int型的数组,返回值为空void。所以主函数调用该函数的语句System.out.println(arrayRev(temp));实际上就是输出空,编译失败




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2