2016-11-01 1 views
0

So habe ich für eine Weile nach einer Antwort zu suchen, und ich fand nur Leute mit ArrayList und eine Person, die es tat, aber es war, um die Zeile zu entfernen und Spalte zur gleichen Zeit, denke ich, ich versuche es zu tun, indem ich der letzten genannten, aber ich weiß nicht, was "weiter"; seine Mittel, wie und wann verwendet .. Dies ist der Code i gefunden (i modifiziert, um den Namen der Variablen, aber es ist immer noch ein bisschen das gleiche):wie man eine Reihe ODER eine Spalte in einer Matrix in Java

public static long [][] removecol(long mat[][],int ren, int col){ 
    int rengre=ren;// row to remove 
    int colre=col;// column to remove 
    long mat2[][]= new long [mat.length-1][mat[0].length-1]; 
    int p=0; 
    for(int i = 0; i <mat.length; ++i) 
    { 
     if (i == rengre) 
      continue; 
     int q = 0; 
     for(int j = 0; j <mat[0].length; ++j) 
     { 
      if (j == colre) 
       continue; 

      mat2[p][q] = mat[i][j]; 
      ++q; 
     } 
     ++p; 
    } 
     return mat2; 
} 

Ich dachte, vielleicht in zwei Verfahren zu trennen, ein zu entfernen Zeile und andere Spalt, um so etwas zu entfernen:

public static long [][] removerow(long mat[][],int ren){ 
    int rengre=ren;//row to remove 
    long mat2[][]= new long [mat.length-1][mat[0].length]; 
    int p=0; 
    for(int i = 0; i <mat.length; ++i) 
    { 
     if (i == rengre) 
      continue; 
     int q = 0; 
     for(int j = 0; j <mat[0].length; ++j) 
     { 
      if (j == colre) 
       continue; 

      mat2[p][q] = mat[i][j]; 
      ++q; 
     } 
     ++p; 
    } 
     return mat2; 
} 

aber ich weiß nicht wirklich, wie diese zwischen Spalte zu trennen und Reihe ... ich weiß, Sie könnten mich müde von Fragen zu diesem Thema, aber ich kann einfach nicht kommen mit einem Weg, es zu tun: c Hilfe.

+0

continue bedeutet, dass der Rest der Schleife übersprungen wird und die nächste Iteration der Schleife beginnt. Wenn Ihr Code während der Entfernung einer Zeile oder Spalte übereinstimmt, wird er nicht zum endgültigen Array hinzugefügt. Dann wird das letzte Array von der Methode zurückgegeben. – Shafiul

Antwort

0

Wenn fortfahren gefunden wird, wird der Rest Ihres Codes in der Schleife übersprungen und die nächste Iteration der Schleife wird stattfinden. Für Ex:

int [] numbers = {10, 20, 30, 40, 50}; 
    for(int x : numbers) { 
    if(x == 30) { 
     continue;   
     } 
    System.out.print(x);  //when x=30,these will not run; 
    System.out.print("\n"); 
    } 

Hier wird, wenn x = 30, die fortsetzen wird ausgeführt und die Schleife zur nächsten Iteration gehen, anstatt Ihren Restes des auf weiterhin code.For mehr Verständnisses für Laufen, schauen these examples.

Nun, über Ihre Spalte/Zeile mögliches Problem äußere Schleife zu entfernen verwendet wird, Reihen- und innere Schleife entfernen verwendet wird column.If entfernen Sie wollen Ihre Spalte nicht entfernen, nicht dann verwenden weiterhin in innere Schleife.Ihr Code wird so etwas sein ...

public static long [][] removerow(long mat[][],int ren){ 
    int rengre=ren;//row to remove 
    long mat2[][]= new long [mat.length-1][mat[0].length]; 
    int p=0; 
    for(int i = 0; i <mat.length; ++i) 
    { 
     if (i == rengre) 
      continue; 
     int q = 0; 
     for(int j = 0; j <mat[0].length; ++j) 
     { 
      mat2[p][q] = mat[i][j]; 
      ++q; 
     } 
     ++p; 
    } 
     return mat2; 
} 
+0

oooh Danke, und wenn ich die Zeile nicht entfernen möchte, ändere ich den Continue-Abschnitt in die innere Schleife? – Angelmartin11

+0

gut..ja..aber immer noch versuchen Sie es selbst und sehen –

Verwandte Themen