Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Удалить пустые строки двухмерного массива / 25 сообщений из 26, страница 1 из 2
26.05.2017, 13:01
    #39460374
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Помогите доделать функцию, чтобы она заменяла посылаемый на неё массив на тот, что уже получется в результате
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private static void 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;
	}
...
Рейтинг: 0 / 0
26.05.2017, 13:17
    #39460392
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Сам массив заменить не получится, в Java нет out параметров.
Но можно заменить содержимое массива.
https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#arraycopy(java.lang.Object, int, java.lang.Object, int, int)
Но, ИМХО, это пагубная практика.
...
Рейтинг: 0 / 0
26.05.2017, 13:21
    #39460394
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlazkowiczНо можно заменить содержимое массива.
Размер же массива от этого не уменьшится. Т.ч. задачу топик стартера это не решает.

BlazkowiczНо, ИМХО, это пагубная практика.
Полностью солидарен с данной точкой зрения
...
Рейтинг: 0 / 0
26.05.2017, 13:27
    #39460399
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Blazkowicz,
Ну а если так
Х = DelEmptyRow2DArray(У);
Х будет иметь те же данные?
...
Рейтинг: 0 / 0
26.05.2017, 13:50
    #39460421
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Leonid Kudryavtsev,

Ну или какими то другими способами это решить?
...
Рейтинг: 0 / 0
26.05.2017, 13:52
    #39460423
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Blazkowicz,
Просто посылаю на функцию, она отрабатывает, но выхода не даёт. Вот как прикрутить это?
...
Рейтинг: 0 / 0
26.05.2017, 13:58
    #39460432
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngelBlazkowicz,
Просто посылаю на функцию, она отрабатывает, но выхода не даёт. Вот как прикрутить это?
Код: java
1.
private static String[][] DelEmptyRow2DArray(String[][] mass) {
...
Рейтинг: 0 / 0
26.05.2017, 14:36
    #39460464
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Blazkowicz,
Что то не прокатило.
...
Рейтинг: 0 / 0
26.05.2017, 14:41
    #39460468
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Blazkowicz,
Что то не пойму, как это использовать в коде
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 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;
	}


Так?
DelEmptyRow2DArray(massivchik);
Если да, то не фурычит.
...
Рейтинг: 0 / 0
26.05.2017, 14:54
    #39460481
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Что значит "не фурычит"?
Приведите весь код + тестовые данные и что же нужно сделать.
...
Рейтинг: 0 / 0
26.05.2017, 14:57
    #39460487
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Leonid Kudryavtsev,

Не фурычит - входной массив не подменяется на итоговый массив функции.
...
Рейтинг: 0 / 0
26.05.2017, 14:57
    #39460488
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Leonid KudryavtsevЧто значит "не фурычит"?
Технический термин такой. Значит: "мне лениво разбираться и объяснять что не так. Запустите у себя, исправьте, и дайте мне готовый код."
...
Рейтинг: 0 / 0
26.05.2017, 14:58
    #39460489
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Leonid Kudryavtsev,
Смотрю это в дебагере
...
Рейтинг: 0 / 0
26.05.2017, 15:00
    #39460493
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngelНе фурычит - входной массив не подменяется на итоговый массив функции.
Нет такого понятия "подменить массив". Есть переменная, она ссылается на массив. Есть массив, это объект в памяти, который состоит из ссылок на String. Нет никаких "подмен". Можно поменять переменную, чтобы указывала на другой массив. Можно поменять ячейку массива, чтобы ссылалась на другую строку. Учитесь изъясняться в терминах выбранного языка программирования.
...
Рейтинг: 0 / 0
26.05.2017, 15:00
    #39460494
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngelLeonid Kudryavtsev,
Смотрю это в дебагере
Фурычит = смотрю это в дебагере
Не фурычит = смотрю то в дебагере
...
Рейтинг: 0 / 0
26.05.2017, 15:13
    #39460506
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Blazkowicz,
Хорошо. Сделаем так.
В массиве massiv есть пустые строки. Какой строкой кода можно удалить пустые строки в этом массиве, используя предложенную функцию, с минимальными доработками кода?
...
Рейтинг: 0 / 0
26.05.2017, 15:38
    #39460526
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngelКакой строкой кода можно удалить пустые строки в этом массиве, используя предложенную функцию, с минимальными доработками кода?
))
...
Рейтинг: 0 / 0
26.05.2017, 15:41
    #39460529
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngel,

Для начала хорошо бы объяснить что именно у вас "пустые строки". Потому что в терминах Java "пустая строка" это объект типа String нулевой длины, а у вас в коде проверка на null первого элемента каждого под-массива.

Если же ваш массив это таблица строки и колонок, то не понятно почему вы проверяете только первый элемент. Вероятно эта задача продолжение предыдущей? Почему нельзя было отфильтровать строки при чтении? Так же остаётся не понятным настойчивое желание использовать массывы вмето коллекций. Чтобы потом героически преодолевать подобные трудности?

Если же пустая строка это ссылка String со значением null, то не понятно что удалять тогда.
...
Рейтинг: 0 / 0
26.05.2017, 15:49
    #39460534
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngel,

да приведи ты уже пример что есть и что должно получиться.
проблема в том, что поменять размерность массива нельзя.
можно только создать новый.

но значения в массиве поменять можно
...
Рейтинг: 0 / 0
26.05.2017, 16:25
    #39460560
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Blazkowicz,
автормассив это таблица строки и колонок

Для моей задачи этого достаточно чтобы проверить первый столбец. Как отфильтровать строки при чтении, причем чтении массива, если размерность массива неизвестна?
По поводу коллекций - не знаю что это, не использовал. И героическое преодоления конвертов в массив и обратно, тоже не приветствую.


Дмитрий, да вы шутник - 200 строк кода перебивать на телефоне с монитора.
Знаю что размерность изменить нельзя. Но задать имя нового массива = старому почему нельзя вот вопрос.
...
Рейтинг: 0 / 0
26.05.2017, 16:42
    #39460572
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngel... размерность массива неизвестна ...

Знаю что размерность изменить нельзя.
оно и понятно -- как можно изменить что-то, если ты о нём ничего не знаешь?
возможно, что его совсем не существует.
...
Рейтинг: 0 / 0
26.05.2017, 16:47
    #39460576
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngelЧто то не пойму, как это использовать в коде

Так?
DelEmptyRow2DArray(massivchik);
Если да, то не фурычит.

String[][] massivchik = собратьВсеДанныеВОдинМассив();
massivchik = DelEmptyRow2DArray(massivchik);

чо не так-то?

***

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
String[][] massivchik = собратьВсеДанныеВОдинМассив()

Holder<?> holder = new Holder()
holder.value = massivchik

DelEmptyRow2DArray(holder)

fun DelEmptyRow2DArray(holder: Holder) {
  massivchik = holder.value

  holder.value = DelEmptyRow2DArray(massivchik)
}
...
Рейтинг: 0 / 0
26.05.2017, 16:49
    #39460580
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
BlackeAngelразмерность массива неизвестна?размерность неизвестна только у того массива, которого не существует
...
Рейтинг: 0 / 0
26.05.2017, 17:27
    #39460602
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
Код: java
1.
2.
3.
4.
5.
6.
7.
String[][] результат = Arrays.stream(данные)
                .filter(this::непустаяСтрока)
                .toArray(String[][]::new);

private boolean непустаяСтрока(String[] строка) {
    return строка[0] != null;
}
...
Рейтинг: 0 / 0
26.05.2017, 19:19
    #39460652
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пустые строки двухмерного массива
grasoff.netBlackeAngelразмерность массива неизвестна?размерность неизвестна только у того массива, которого не существует
Ну ка, ну ка. Есть массив n, размерностью kxh, из него надо выбрать все строки(как у эксель или опенофиса), содержащие "ё" в новый массив ц. Какова размерность массива ц?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Удалить пустые строки двухмерного массива / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]