2015-09-22 2 views
1

Я понимаю, что массив является объектом в Java. Я хочу напечатать один массив, как и другие объекты, но это не сработает:Печать массива как объекта в Java

public static Object[] join(Object[] obj1,Object[] obj2) 
{ 
    Object[] sum=new Object[obj1.length+obj2.length]; 
    int i=0; 
    for(;i<obj1.length;i++) 
    { 
     sum[i]=obj1[i]; 
    } 
    for(int j=0;j<obj2.length;j++,i++)  { 
     sum[i]=obj2[j]; 
     // i++; 
    } 
    return sum; 
} 

public static void main(String[] args) { 
    // TODO code application logic here 
    int[] array={1,2,3,4,5}; 
    Object[] obj1={"Nguyen Viet Q",28,"Doan Thi Ha",array}; 
    Object[] obj2={"Nguyen Viet Q1",28,"Doan Thi Ha1"}; 
    join(obj1,obj2); 
    for(Object o: join(obj1,obj2)) 
    { 
     System.out.print(o.toString()+" ");// i want to print array object 
    }   
} 

Может кто-нибудь мне помочь?

+1

Что вы пытаетесь достичь, вставив ссылочную переменную 'array' в строке:' Object [] obj1 = {"Nguyen Viet Quan", 28, "Doan Thi Ha", массив}; '? –

ответ

3

Сначала ваш метод join требует только одного цикла для копирования obj2, а также obj1. Вы можете найти максимальную длину для теста цикла. И затем скопируйте на каждый действительный индекс. Это может выглядеть как-то

public static Object[] join(Object[] obj1, Object[] obj2) { 
    Object[] sum = new Object[obj1.length + obj2.length]; 
    int len = Math.max(obj1.length, obj2.length); 
    for (int i = 0; i < len; i++) { 
     if (i < obj1.length) { 
      sum[i] = obj1[i]; 
     } 
     if (i < obj2.length) { 
      sum[i + obj1.length] = obj2[i]; 
     } 
    } 
    return sum; 
} 

Затем вам нужно сохранить ссылку на ваш присоединился obj (или print его непосредственно). А поскольку она содержит вложенный массив, вы можете выбрать Arrays.deepToString(Object[])

public static void main(String[] args) { 
    int[] array = { 1, 2, 3, 4, 5 }; 
    Object[] obj1 = { "Nguyen Viet Quan", 28, "Doan Thi Ha", array }; 
    Object[] obj2 = { "Nguyen Viet Quan1", 28, "Doan Thi Ha1" }; 
    System.out.println(Arrays.deepToString(join(obj1, obj2))); 
} 

, который выводит (отформатированный на этот пост)

[Nguyen Viet Quan, 28, Doan Thi Ha, [1, 2, 3, 4, 5], 
    Nguyen Viet Quan1, 28, Doan Thi Ha1] 
+0

Код для соединения, предложенный OP, также работает, и единственное изменение, которое необходимо изменить, - это печать многотонового массива с использованием 'deepToString'. –

Смежные вопросы