Моего профессор выдавал вопрос обзора наших среднесрочный на этой неделю, что я запутался:Удаление строки из рваного массива 2D Струнного и сокращение массива в процессе
Напишите метод, который получает два -мерный (оборванный) массив Строковые объекты и возвращает двумерный (оборванный) массив String объектов, в которых все нулевые записи были удалены. Например, если исходный массив имеет данные (NULL, представляет собой нуль справки):
{"John", null, "Mary", "George", null},{null, "Pete", "Rick"},{null, null, null}};
результат, создаваемый метод будет двумерный массивом с тремя рядами.
{"John", "Mary", "George"},{"Pete", "Rick"},{}}; // last row will be empty
код у меня есть:
public static String[][] removeNull2D(String[][] ragged) {
int counter = 0;
int nullCounter = 0;
String[][] array; // isn't initialized
// doesn't work I tested in debugger, need a way to shorten each row by the amount of null values it has
for (int i = 0; i < ragged.length; i++) {
for (int j = 0; j < ragged[i].length; j++) {
if (ragged[i][j] == null) {
nullCounter++;
for (j = 0; j < ragged[i].length; j++) {
array = new String[ragged.length][ragged[i].length - nullCounter];
}
}
}
}
// based off 1D array approach
for (int i = 0; i < ragged.length; i++) {
for (int j = 0; j < ragged[i].length; j++) {
if (ragged[i][j] != null) {
array[i][counter++] = ragged[i][j];
}
}
}
return ragged;
}
Я понимаю, что нужно подсчитать количество нулевых значений в каждой строке и вычитать, что из общей длины каждой строки для массива String «массив «(плохое имя, которое я знаю). Я думал, может быть, если я сделал метод для 1D массива, это помогло бы мне понять логику немного лучше:
public static String[] removeNull1D(String[] a) {
String[] array = new String[a.length - 1];
int counter = 0;
for (int i = 0; i < a.length; i++) {
if (a[i] != null) {
array[counter++] = a[i];
}
}
a = array;
return array;
}
до сих пор путает, как логика относится к рваному методу массива 2D, любое уточнение будет оценен по достоинству! Кроме того, я не верю, что могу импортировать что угодно (по крайней мере, не предполагается), и еще раз это всего лишь вопрос обзора, поэтому я не подчеркиваю получение ответа, просто пытаясь понять логику, лежащую в его основе.
Так в чем проблема? Если вы удалите нули, вам не нужно ничего подсчитывать, пока вы используете ArrayList, а не массив. Если вы используете массив, обработайте все строки и найдите наибольшее количество ненулевых значений. –
Взгляните на это: http://stackoverflow.com/q/4150233/1743880 – Tunaki