int[ ][ ] num=new int[5][ ];
num[0]=new int[1];
num[1]=new int[5];
num[2]=new int[];
num[3]=new int[3];
Может ли печатаемый массив печатать в одном цикле или нужны две петли?Печать списка неровных массивов в одном цикле
int[ ][ ] num=new int[5][ ];
num[0]=new int[1];
num[1]=new int[5];
num[2]=new int[];
num[3]=new int[3];
Может ли печатаемый массив печатать в одном цикле или нужны две петли?Печать списка неровных массивов в одном цикле
Необходимы две петли; один для перебора массива массивов и один для циклического перехода по каждому вложенному массиву и печати соответствующего элемента. Вы также можете просто использовать 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]
Это не будет работать, поскольку 'deepToString' работает с Integer [], а не int []. Автобоксинг не работает для примитивов массива – Jatin
@arshajii это зависимый от Java вариант аргумента – Cruncher
@Jatin * «Если элемент' e' является массивом примитивного типа, он преобразуется в строку, вызвав соответствующую перегрузку ' Arrays.toString (e) '.Если элемент' e' является массивом ссылочного типа, он преобразуется в строку, как путем рекурсивного вызова этого метода. * * – arshajii
Вы можете избежать написания внутреннего цикла с помощью Arrays.toString()
.
for(int[] row: num) {
System.out.println(Arrays.toString(row));
}
Но ваш код на самом деле не быстрее. Он все еще использует петлю для петли под капотом.
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 петли лучше. Это не быстрее, на самом деле это, вероятно, медленнее.
Creative. Я должен сказать, что это отвечает на вопрос! Как вы говорите, никто не захочет использовать его, хотя ... –
Lol, я не помню, как писал этот ответ, но это определенно немного дерзко. Это, по сути, просто реализация внутренней петли с счетчиками – Cruncher
@Ole V.V Я очистил ее совсем немного, так как вам понравилось – Cruncher
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();
}
}
}
2 dimensions = 2 вложенные петли. –
Это не список массивов, это массив. – arshajii
@JunedAhsan Я думаю, что OP означает Jagged. –