黑马程序员技术交流社区

标题: Object接收问题 [打印本页]

作者: _王涛    时间: 2013-3-28 14:44
标题: Object接收问题
本帖最后由 _王涛 于 2013-3-28 17:18 编辑

我们知道Object几乎可以接收任何类型参数,那么我们在给一个函数传递一个int类型的数组后,如何打印输出数组中的所有值呢?
我给出数组和要打印的函数如下:
  int arr[]={12,32,11,33,45};
  public static void printInt(Object arr){ ...... }

求解中??
     
作者: 魏福伟    时间: 2013-3-28 15:05
public static void printInt(Object arr)
        {
                for(int i = 0; i < ((int[])arr).length; i++)
                {
                        System.out.print(((int[])arr)[i] + " ");
                }
                System.out.println();
        }
把object向下类型转换成int[]
作者: 胡帅冰    时间: 2013-3-28 15:15
第一:你的数组定义是错误的。正确的是:int [] arr={12,32,11,33,45};
第二:就是在输出的时候需要强制转换为int [] 型的。object接收的只是数组中的首位元素的内存地址,只有强制转换为int []  型的 通过循环输出才行。
作者: 蔡陶军    时间: 2013-3-28 15:28
这道题在视频中毕老师也讲过的

只要把Object向下转型 转成int[]就ok了

我把你的代码修改了下 如下:
  1. public class Today {
  2.         public static void printInt(Object cc)
  3.         {
  4.                 int[] bb=(int[])cc;
  5.                 for(int i=0;i<bb.length;i++)
  6.                 {
  7.                         System.out.print(bb[i]+“、”);
  8.                 }
  9.                
  10.         }
  11.         public static void main(String[] args) {
  12.                 int[] arr={12,32,11,33,45};
  13.                 printInt(arr);
  14.         }
  15. }
复制代码

作者: 刘海陆    时间: 2013-3-28 15:37
  int[] arr= {12,32,11,33,45};
  public static void printInt(Object arr)
  {
       int[]  a = (int[])arr;//把arr强制转化成int[]数据类型。
       //下面就是对数组进行遍历了。
       System.out.print("[");         
       for(int x = 0 ; x < a.length ; x++)
       {
              if (x != a.length-1)
                    System.out.print(a[x]+" ,");
              else
                    System.out.print(a[x]+"]");
       }  
  }

注意一下,你的arr 数组定义错了,应该有[]  ,我用红色的标记了
作者: 黄玉昆    时间: 2013-3-28 17:18
如果你觉得自己写循环比较麻烦的,可以使用Arrays这个工具类中的toString()方法,这个方法可以接收很多的数组类型,直接打印如:System.out.println(Arrays.toString(arr));,具体请参考Arrays的API文档




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