黑马程序员技术交流社区

标题: 各路大神帮小弟看看一个数组的小问题~ [打印本页]

作者: fendoubuxi    时间: 2014-5-6 15:20
标题: 各路大神帮小弟看看一个数组的小问题~
  1. int [] a={1,2,3};
  2. String[] str={"abc","qze"};
  3. Object[] obj={a,str,"qqs"};
复制代码

我想知道这个数组怎么把里面的的int,String全部打印出来?
作者: ノtrack    时间: 2014-5-6 15:21
遍历吧   
for(数据类型 变量名 : 数组)
{

}
作者: 程序爱好者    时间: 2014-5-6 16:23
for(int i=0;i<a.length;i++)
{

}
作者: fendoubuxi    时间: 2014-5-6 16:26
ノtrack 发表于 2014-5-6 15:21
遍历吧   
for(数据类型 变量名 : 数组)
{

我想用递归去实现
作者: 官珺伟    时间: 2014-5-6 17:02
本帖最后由 官珺伟 于 2014-5-6 17:05 编辑

楼主,请看代码:

package day02;
import java.util.*;
public class PrintArray {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int [] a={1,2,3};
                String[] str={"abc","qze"};
                Object[] obj={a,str,"qqs"};        
                /*
                for(int x=0;x<a.length;x++){
                        System.out.print(a[x]);
                }
                System.out.println();
               
                for(int x=0;x<str.length;x++){
                        System.out.print(str[x]+",");
                }
                System.out.println();
               
               
                for(int x=0;x<obj.length;x++){
                        System.out.print(obj[x]+",");
                }               
                */
               
                for(int i:a){
                        System.out.print(i);
                }               
                System.out.println();
               
                for(String s:str){
                        System.out.print(s+",");
                }
                System.out.println();
               
                for(Object o:     obj){
                        System.out.print(o+"!");
                }
               

        }

}

作者: ノtrack    时间: 2014-5-6 17:10
fendoubuxi 发表于 2014-5-6 16:26
我想用递归去实现

....   递归不会            你又不说清楚。。。
作者: thinkervsruler    时间: 2014-5-6 17:28
本帖最后由 thinkervsruler 于 2014-5-6 17:34 编辑

我想问题在于打印Object[]这个数组吧,里面有整型数组和字符串数组,直接遍历打印的话,前面两个打印出的是地址值,不是里面的字符和数字。递归我也不会做,不过可以按下面的代码达到打印要求:

  1. <font size="3">import java.util.*;
  2. class  PrintObj
  3. {
  4.      public static void main(String[] args)
  5.      {
  6.              int[] a={1,2,3};
  7.              String[] str={"abc","qze"};
  8.              Object[] obj={a,str,"qqs"};               
  9.              myPrint(obj);
  10.       }
  11.       public static void myPrint(Object[] obj)
  12.       {
  13.              //遍历obj数组
  14.              for(int k=0; k<obj.length; k++)
  15.              {
  16.                     //判断如果obj[k]是整型数组,则按下面的方式打印
  17.                     if( obj[k] instanceof int[] )
  18.                     {                                
  19.                             int[] arr =(int[]) obj[k];
  20.                             for(int i=0; i<arr.length; i++)
  21.                                    System.out.print(arr[i]+",");                                
  22.                     }

  23.                     //如果obj[k]是字符串数组类型,则按下面的方式打印
  24.                     else if(obj[k] instanceof String[])
  25.                     {
  26.                             String[] st = (String[]) obj[k];
  27.                             for(int i=0; i<st.length; i++)
  28.                                    System.out.print(st[i]+",");
  29.                     }

  30.                     //其它情况,直接输出
  31.                     else
  32.                            System.out.println(obj[k]);                        
  33.              }
  34.        }
  35. }
复制代码




作者: thinkervsruler    时间: 2014-5-6 18:07
本帖最后由 thinkervsruler 于 2014-5-6 18:19 编辑

还有另外一种更简单的方法,直接调用Arrays类的静态方法deepToString(),返回指定数组深层内容的字符串形式,代码如下:

import java.util.*;
class  PrintObj
{
    public static void main(String[] args)
    {
        int[] a={1,2,3};
        String[] str={"abc","qze"};
        Object[] obj={a,str,"qqs"};        
        System.out.println(Arrays.deepToString(obj));
    }
}


作者: iloveyou    时间: 2014-5-6 19:46
学习学习
作者: Silvester    时间: 2014-5-6 22:50
本帖最后由 Silvester 于 2014-5-9 14:06 编辑

class Test {
        public static void main(String[] args) {
                int [] a={1,2,3};   //定义的数组
                //x为数组下标从0开始。如果倒序打印,定义x=a.length-1,然后在下递归调用时候用outPut(a,x-1),判断语句if也要改。
                final int x=0;     
                outPut(a,x);                //调用outPut方法打印,把数组和数组下标传入
        }

        public static void outPut(int a[],int x){        //x为接收数组下标        
                if (x>=a.length)
                        return;
                System.out.println(a[x]);
                outPut(a,x+1);                  //递归调用
        }
}

递归方法实现的打印,另外两个字符串数组和对象数组也是一样的道理就不多写了,与楼主共勉。


作者: 酱油炒饭    时间: 2014-5-8 20:39
不太懂~~
作者: jsjchenlong    时间: 2014-5-8 21:43
        public static void main(String[] args) {
                int [] a={1,2,3};
                String[] str={"abc","qze"};
                Object[] obj={a,str,"qqs"};
                System.out.println(obj);
                fun1(obj);
        }
       
        public static void fun1(Object[] obj) {
                for(int i =0; i<obj.length;i++) {
                        System.out.println(obj[i]);
                }
        }
作者: 李小新H    时间: 2014-5-9 07:22
答案好多种啊!
作者: 蒋大帅    时间: 2014-5-11 21:14
不是使用for循环就可以了吗




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