2009-11-18 6 views
0

comment puis-je dire en javaFin du tableau 2d

si je reçois à la fin d'une ligne dans un tableau 2d et je n'ai rencontré 0 dans cette ligne pour définir la ligne à la suivante (ligne + +) et mettre la colonne à 0 (colonne = 0)?

Je rencontre des problèmes où mon algorithme i passe dans une boucle infinie: D

grâce

+2

Postez votre code avec un exemple d'entrée et de sortie auquel vous vous attendez. – Joe

+0

Pouvez-vous poster votre algorithme? – Konamiman

+0

presque impossible sans vous envoyer l'ensemble du projet inclus des graphiques qui sont stockés dans un fichier externe au programme – timmy

Répondre

1

uh, sons comme vous voulez une boucle imbriquée de base pour itérer à travers votre tableau ...

for(int i=0; i<rows.length; i++) 
    for(int j=0; j<columns.length; j++) 

Ceci réinitialisera vos colonnes indépendamment. Si vous voulez faire quelque chose tricksy et hackish

int sum =0; 
for(int i=0; i<rows.length; i++) 
{ 
    sum+= rows[i]; 
    if(i == rows.length-1 && sum == 0) 
    { 
    i=i+1 
    } 
    for(int j=0; j<columns.length; j++) 
    { 
    //whatever else you want here 
    } 
} 

Notez que cela semble être une condition plus rare ... Je algorithmiquement espère que vous n'êtes pas essayer de pirater autour d'un bug sale au lieu de déterminer quel est le problème réel est!

+0

J'ai une matrice symétrique, quand je boucle en haut de celui-ci je trouve un> 0, je prends un de la matrice [ x] [y] et la matrice [y] [x] puis j'ai mis la ligne suivante à la colonne où j'étais, cela arrive jusqu'à ce qu'il n'y ait plus de valeurs dans mon tableau, le problème est que je fais cela une rangée n'a pas de 0 donc je dois dire, si je suis à la fin d'une rangée et il n'y a pas de 0, il suffit de recommencer à partir de la prochaine – timmy

+0

Alors qu'est-ce que vous essayez exactement de faire? Si vous essayez de redimensionner dynamiquement un tableau bidimensionnel nxn dans une boucle, vous allez probablement vous mettre en difficulté. Cela semble assez ésotérique, mais si vous essayez de réduire simultanément la valeur de [2] [3] et [3] [2] par 1 alors qu'il y a encore des valeurs non nulles dans votre tableau, vous pouvez simplifier la logique pour cela un peu. –

+0

oui c'est tout ce que je suis en train de faire, ça marche bien pour les graphes snaller, j'ai juste essayé de faire une bête et ça reste coincé dans une boucle: S – timmy

0

Cet exemple parcourt le réseau jusqu'à ce que la première valeur non nulle soit trouvée et l'affiche avec les coordonnées.

int[][] x = new int[column][row]; 
boolean allzero = true; 

for(int i=0;i<row;i++) { 
    for(int j=0;j<column;j++) { 
    allzero = (x[j][i]==0) && allzero; 
    if(!allzero) { 
     //what do we want to do when we encounter a non zero value? 
     System.out.println("Found "+x[j][i]+" at row: "+i+" column: "+j); 
     break; 
    } 
    } 
    if(!allzero) { 
    //what do we want to do when we encountered a non zero value? 
    break; 
    } 
} 

En fait, je ne comprends pas ce que vous entendez

colonne set à 0 (colonne = 0)

Si vous voulez juste continuer en boucle à travers le réseau deux imbriquée des boucles comme celle ci-dessus le feront. Une fois la ligne terminée (boucle interne), la boucle externe s'incrémente de un et la boucle interne redémarre à zéro. Toutes les lignes sont donc parcourues du début à la fin.