2013-08-29 2 views
1
int[ ][ ] num=new int[5][ ]; 
num[0]=new int[1]; 
num[1]=new int[5]; 
num[2]=new int[]; 
num[3]=new int[3]; 

Может ли печатаемый массив печатать в одном цикле или нужны две петли?Печать списка неровных массивов в одном цикле

+3

2 dimensions = 2 вложенные петли. –

+0

Это не список массивов, это массив. – arshajii

+1

@JunedAhsan Я думаю, что OP означает Jagged. –

ответ

2

Необходимы две петли; один для перебора массива массивов и один для циклического перехода по каждому вложенному массиву и печати соответствующего элемента. Вы также можете просто использовать Arrays.deepToString() (который использует петли внутри):

int[][] num = new int[5][]; 
num[0] = new int[1]; 
num[1] = new int[5]; 
num[2] = new int[0]; 
num[3] = new int[3]; 

System.out.println(Arrays.deepToString(num)); 
 
[[0], [0, 0, 0, 0, 0], [], [0, 0, 0], null] 
+0

Это не будет работать, поскольку 'deepToString' работает с Integer [], а не int []. Автобоксинг не работает для примитивов массива – Jatin

+0

@arshajii это зависимый от Java вариант аргумента – Cruncher

+0

@Jatin * «Если элемент' e' является массивом примитивного типа, он преобразуется в строку, вызвав соответствующую перегрузку ' Arrays.toString (e) '.Если элемент' e' является массивом ссылочного типа, он преобразуется в строку, как путем рекурсивного вызова этого метода. * * – arshajii

0

Вы можете избежать написания внутреннего цикла с помощью Arrays.toString().

for(int[] row: num) { 
    System.out.println(Arrays.toString(row)); 
} 

Но ваш код на самом деле не быстрее. Он все еще использует петлю для петли под капотом.

1
void printRaggedArray(int[][] ragged) { 
    int outer = 0; 
    int inner = 0; 
    while(outer < ragged.length) { 
     if(inner >= ragged[outer].length) { 
      inner=0; 
      outer++; 
      continue; 
     } 
     System.out.println[outer][inner++]; 
    } 
} 

Это работает, но 2 петли лучше. Это не быстрее, на самом деле это, вероятно, медленнее.

+1

Creative. Я должен сказать, что это отвечает на вопрос! Как вы говорите, никто не захочет использовать его, хотя ... –

+0

Lol, я не помню, как писал этот ответ, но это определенно немного дерзко. Это, по сути, просто реализация внутренней петли с счетчиками – Cruncher

+0

@Ole V.V Я очистил ее совсем немного, так как вам понравилось – Cruncher

0
public class Main { 
    public static void main(String args[]) { 
    int twoD[][] = new int[4][]; 
    twoD[0] = new int[1]; 
    twoD[1] = new int[2]; 
    twoD[2] = new int[3]; 
    twoD[3] = new int[4]; 

    for (int i = 0; i < 4; i++){ 
     for (int j = 0; j < i + 1; j++) { 
     twoD[i][j] = i + j; 
     } 
    } 
    for (int i = 0; i < 4; i++) { 
     for (int j = 0; j < i + 1; j++) 
     System.out.print(twoD[i][j] + " "); 
     System.out.println(); 
    } 
    } 
} 
Смежные вопросы