2017-02-09 6 views
3

Ich versuche, das letzte Komma aus meiner Druckmethode zu entfernen. Gibt es eine Möglichkeit, dies zu tun? Danke.Entfernen des letzten Kommas

public void print() { 
    for(int i = 0; i < M.length; i++){ 
     for(int j = 0; j < M[i].length; j++){ 
      System.out.print(M[i][j] + ","); 
     } 
     System.out.println(); 
    } 

} 

Ausgang:

1.5,2.0,3.0,

3.0,2.5,4.0,

2.5,4.0,2.5,

Ich landete das Hinzufügen einer „if "Aussage, um das gleiche Problem zu lösen. Hier ist, wie ich am Ende, es zu tun:

public void print() { 
    for(int i = 0; i < M.length; i++){ 
     for(int j = 0; j < M[i].length; j++){ 
      if(j == M[i].length-1){ 
       System.out.print(M[i][j] +" "); 
      } 
      else{ 
       System.out.print(M[i][j] + ","); 
      } 
     } 
     System.out.println(); 
    } 

} 

Ausgang:

1.5,2.0,3.0

3.0,2.5,4.0

2.5,4.0,2.5

+2

System.out.print (((j == 0))? "": ",") + M [i] [j]); –

Antwort

1

Fügen Sie in Ihrer zweiten for-Schleife eine if-Anweisung hinzu, die überprüft, ob es das letzte Element der Liste ist. Wenn dies der Fall ist, lassen Sie das Komma weg. Else, setze das Komma.

+1

Danke, mein Herr. Ihr Kommentar hat mir geholfen und ich habe meine Frage bearbeitet, indem ich die vorgeschlagene Lösung hinzugefügt habe. –

3

benutze ich oft dieses Idiom für dieses Problem - machen eine variable comma Sonder ("") zum ersten Mal, und es dann in den Normalzustand wiederherzustellen (", ") zum zweiten Mal und weiter:

public void print() { 
    for(int i = 0; i < M.length; i++){ 
     String comma = "";  // first time special 
     for(int j = 0; j < M[i].length; j++){ 
      System.out.print(comma + M[i][j]); 
      comma = ",";  // second time onward 
     } 
     System.out.println(); 
    } 

} 
+1

oh wow ... Schöne Lösung –

0

Sie können "," vor dem Element anstelle von nach, und es einfach nicht vor dem ersten Element drucken:

public void print() { 
    for (int i = 0; i < M.length; i++) { 
     if (M[i].length != 0) { 
      System.out.print(M[i][0]); 
     } 
     for(int j = 1; j < M[i].length; j++) { 
      System.out.print("," + M[i][j]); 
     } 
     System.out.println(); 
    } 
} 

Sie können auch die Zeile in einer variablen speichern möchten, so dass Sie don‘ t hält das i te Element von M Zugriff wiederholt:

public void print() { 
    for (int i = 0; i < M.length; i++) { 
     final type[] row = M[i]; 
     if (row.length != 0) { 
      System.out.print(row[0]); 
     } 
     for(int j = 1; j < row.length; j++) { 
      System.out.print("," + row[j]); 
     } 
     System.out.println(); 
    } 
} 
0

hier eine coole Java 8 Art und Weise, es zu tun, wenn Sie Ströme mögen. Arbeiten mit Arrays von int/double: D

Arrays.stream(M) 
     .map(x -> Arrays.stream(x) 
        .mapToObj(String::valueOf) 
        .collect(Collectors.joining(","))) 
     .forEach(System.out::println); 
1

können Sie versuchen, diese

public void print() { 
for(int i = 0; i < M.length; i++){ 
    for(int j = 0; j < M[i].length; j++){ 
     System.out.print(M[i][j]); 
     if (i < M.length-1 || j < M[i].length - 1) { 
      System.out.print(",") 
     } 
    } 
    System.out.println(); 
} 
} 

Grundsätzlich prüft sie, ob das Element der letzte in der Reihe ist, und wenn nicht, druckt es das Komma. wenn es ist, wird das Komma nicht gedruckt. Hoffe, das hilft

2

Sie sollten eine if else Anweisung in Ihrer zweiten for Schleife verwenden. Und statt das Komma hinten zu legen, ist es besser, es nach vorne zu legen. Der Beispielcode wie folgt aussieht:

public void print(){ 
    int[][] M = {{1,3},{2,3,4},{5,6},{5,2}}; 
    for(int i = 0; i < M.length; i++){ 
     for(int j = 0; j < M[i].length; j++){ 
      if (j==0) 
       System.out.print(M[i][j]); 
      else 
       System.out.print(","+M[i][j]); 
     } 
     System.out.println(); 
    } 

} 

Der Code wird Ausgangs

1,3

2,3,4

5,6

5, 2

Verwandte Themen