2015-03-15 3 views
0

У меня есть список массивов, размер которого зависит от двух переменных, заданных пользователем при запуске, и затем заполняется нулями. По мере продвижения программы часть сетки будет заполнена одними, а некоторые с двумя. Все довольно просто, я не знаю, как это сделать, - проверить, есть ли в моем массиве строки нулей, горизонтальные или вертикальные. Кто-нибудь знает как?Проверка наличия нескольких значений в строке в массиве 2d

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

+3

Покажите нам некоторые из ваших соответствующего кода и кто-то, безусловно, будет в состоянии помочь вам – bwegs

ответ

0

Вы будете иметь, чтобы создать цикл для перебора строки, а затем в том, что другой цикл (не забудьте использовать другую переменную) в цикле через колонку

0

Я не знаю, любой класс утилиты, который решает эту проблему, но вы можете легко создать его с помощью метода Arrays.deepEquals.

Создать массив нулей и сравнить его с каждой строкой и файлом в вашей матрице, чтобы получить из них является нулевым значением массивы

0

Одна идеи у меня есть, чтобы создать два 1D массива, один с длиной и другой с высотой вашего 2D-массива и заполнить их нулями. Затем с двумя простыми петлями вы можете прочитать все значения в вашем 2D-массиве. Для каждой строки, если вы находите значение, отличное от 0, вы установите эту позицию в соответствующем массиве на единицу. Я думаю, было бы проще просто написать код и показать вам:

int x = 10, y = 5; // numbers just for the example 
int values[][] = new int[x][y]; 
int foo1[] = new int[x]; 
int foo2[] = new int[y]; 

for(int i=0 ; i<x ; i++) 
    for(int j=0 ; i<y ; j++) 
     if(values[i][j] != 0) { 
      foo1[i] = 1; 
      foo2[j] = 1; 
     } 

После того, как вы сделали это, вы можете перебрать Foo1 [] и foo2 [] и если вы обнаружите какие-либо нули вы будете знать, что при этом соответствующая строка или столбец есть строка или столбец нулей в значениях [] []

+0

Не забудьте заполнить foo1 [] и foo2 [] с нулями в начале –

0

Одним из возможных способов может быть отметка столбцов и строк при их обработке как не всех 0. Вот идея в псевдо-коде

notAll0sC = Array [numberOfColumns] инициирована в 0

notAll0sR = Array [numberOfRows] инициирована в 0

Теперь во время вашего обработки вы будете иметь что-то вроде

myTwoDimArray [R], [С] = 1

notAll0sC [С] = 1

notAll0sR [R] = 1

Затем в конце вы можете пройти через notAll0sC и notAll0sR, чтобы узнать, какие из них по-прежнему равны 0 и как таковые будут строками и столбцами, которые являются всеми 0.

0

Я понял ваш вопрос, надеюсь. Это может помочь ..

int m,n;  
for(int i=0;i<a.length;i++){ 
     m=0; 
     for(int j=0;j<a[0].length;j++){ 
      if(a[i][j]==0) 
       m++; 
      else break; 
     } 
     if(m==a[0].length) 
      // if true? There's a row of zeros 
} 

for(int u=0;u<a[0].length;u++){ 
     n=0; 
     for(int v=0;v<a.length;v++){ 
      if(a[v][u]==0) 
       n++; 
      else break; 
     } 
     if(n==a.length) 
      // if true? There's a columns of zeros 
} 
Смежные вопросы