Показать полную графическую версию : [решено] Удалить пустые строки двухмерного массива
blackeangel
26-05-2017, 19:26
Помогите доделать функцию, чтобы она заменяла посылаемый на неё массив на тот, что уже получется в результате
private static String[][] DelEmptyRow2DArray(String[][] mass) {
int k = 0;
for (int i = 0; i < mass.length; i++) {
if (mass[i][0] != null) {
k = k + 1;
}
}
String[][] new_mass = new String[k][mass[0].length];
for (int i = 0; i < mass.length; i++) {
if (mass[i][0] != null) {
for (int n = 0; n < new_mass.length; n++) {
for (int j = 0; j < mass[0].length; j++) {
new_mass[n][j] = mass[i][j];
}
}
}
}
return new_mass;
}
Один цикл лишний. Зачем перебирать весь новый массив на каждой непустой строке? Этот код будет заполнять весь итоговый массив данными из каждой непустой строки и в самом конце все строки массива будут равны последней строке исходного массива. Поэтому нужно сделать как-то так:
private static String[][] DelEmptyRow2DArray(String[][] mass) {
int k = 0;
for (int i = 0; i < mass.length; i++) {
if (mass[i][0] != null) {
k = k + 1;
}
}
int n = 0;
String[][] new_mass = new String[k][mass[0].length];
for (int i = 0; i < mass.length; i++) {
if (mass[i][0] != null) {
for (int j = 0; j < mass[0].length; j++) {
new_mass[n][j] = mass[i][j];
}
n++;
}
}
return new_mass;
}
Ну или намного проще:
private static String[][] DelEmptyRow2DArray(String[][] arr) {
ArrayList<String[]> list = new ArrayList<String[]>();
for (String[] str : arr) {
if (str[0] != null)
list.add(str);
}
return list.toArray(new String[0][0]);
}
blackeangel
27-05-2017, 08:59
Просто когда в коде вызываю её
DelEmptyRow2DArray(massiv);
то в massiv не удаляются пустые строки. Может я чего то не то делаю?
Может как-то по другому вызывать эту функцию?
С этим я еще толком не разобрался. Находится эта функция в этом же классе.
Или надо вызывать как то так
String[][] Massiv2=DelEmptyRow2DArray(massiv);
?
Или надо вызывать как то так
String[][] Massiv2=DelEmptyRow2DArray(massiv);»
Да, именно так.
blackeangel
29-05-2017, 18:15
Теперь тупой вопрос, но нигде не нашел ответа: как присвоить значение в двумерном массиве в последней строке нулевого столбца?
arr[arr.length][0]="кукушка";
Не работает.
Как правильно то?
blackeangel, не забывайте, что нумерация в массивах начинается с нуля, т.е. последний индекс - не
arr.length
а
arr.length - 1
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC