黑马程序员技术交流社区

标题: 有关可变参数的问题 [打印本页]

作者: 从前有个人    时间: 2013-12-2 14:53
标题: 有关可变参数的问题
本帖最后由 从前有个人 于 2013-12-2 15:03 编辑

class Temptest {
        public static void main(String[] args){
                int[] arr = new int[]{1,2,3};
                show1(1,2,3);
                show2(arr);
        }
        static void show1(int x, int... args){
                for(int i = 0; i <args.length; i++)
                        System.out.print(args);
                System.out.println("");
        }
        static void show2(int arr[]){
                for(int i = 0; i <arr.length; i++ )
                        System.out.print(arr);
        }
}
运行结果如下:
23
123


为什么show1方法会少一个1呢?


作者: 从前有个人    时间: 2013-12-2 15:04
谁能告诉我怎么删帖子呢……
作者: 25343215    时间: 2013-12-2 15:08
楼主传入参数,show1(1,2,3);时,int...args 相当于一个int类型的数组(int[] args),这时数组里面的元素是2,3.又因为,方法里面,没有用到int x,所以x=1没有输出。
static void show1(int x, int... args){
                for(int i = 0; i <args.length; i++)
                System.out.print(args);
                System.out.println("");
        }

作者: hurryup    时间: 2013-12-2 15:37
可变参数进行循环,只循环可变的,不可变的不用循环代码修改如下:
  1. class Temptest {
  2.         public static void main(String[] args){
  3.                 int[] arr = new int[]{1,2,3};
  4.                 show1(1,2,3);
  5.                 show2(arr);
  6.         }
  7.         static void show1(int x, int... args){
  8.                 System.out.print(x);//这就是丢失的1
  9.                 for(int i = 0; i <args.length; i++)
  10.                         System.out.print(args[i]);//数组的0角标是2,1角标是3
  11.                        
  12.                 System.out.println("");
  13.         }
  14.         static void show2(int arr[]){
  15.                 for(int i = 0; i <arr.length; i++ )
  16.                         System.out.print(arr[i]);
  17.         }

  18. }
复制代码





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