2009-11-06 5 views
0

je un tableau de type intComment vérifier la fin du tableau

matrice [] []

et il a des valeurs de 0 et 1

000000000 
101010111 
000010100 
110011001 

les valeurs sont différentes à ce qui précède, cependant, ceci est un exemple aléatoire.

Ce que je dois faire est,

boucle

à travers la première ligne lorsque la colonne = 0 et la ligne = 0 ajouter 1 à la ligne à boucle

si on trouve l'ajouter à une variable

quand j'arrive à la fin de la ligne que je dois aller alors en bas de la Colum 0 ligne = 0 ajouter 1 à la colonne pour obtenir la boucle

alors je dois vérifier la variable somme je suis ajoutant à est% 2 = 0

alors je besoin de vérifier la ligne 1 colonne 1

et répétez l'opération pour tous

le problerm je vais avoir est de déterminer quand je suis arrivé à la fin d'une ligne, comment est-il calculé?

for(int row = 0; row < matrix.length; row++){ 
     if(matrix[columns][row] == 1){ 
      sum ++; 
      if(i am at the end of the row){ 
       //continue with other steps here 

Répondre

5
for (int row = 0; row < matrix.length; row++) { 
    int sum = 0; 
    for (int col = 0; col < matrix[row].length; col++) { 
     if (matrix[row][col] == 1){ 
     sum ++; 
     } 
    } 
    // reached the end of the row 
} 
// reached the end of the array 

Donc, pour chaque ligne (première ligne), vous itérer sur les colonnes de chaque ligne (la deuxième ligne). Cela couvrira tous les éléments du tableau 2d. Vous savez que vous avez atteint la fin de la ligne car vous n'avez plus de colonnes (et quittez la boucle interne).

3

Pas vraiment une réponse exacte à votre question, mais en prenant un peu de recul (sans connaître le contexte autour de votre code), il me semble que vous pourriez utiliser un BitSet au lieu d'un tableau de 0 et 1. Il utilise moins de mémoire et dispose d'un tas de méthodes pratiques (qui sont généralement plus rapides que le code que vous écrivez vous-même). Compter le nombre de bits définis que vous semblez faire est par exemple BitSet.cardinality().

Questions connexes