2017-02-09 102 views
3

我試圖從我的打印方法中刪除最後一個逗號。有沒有辦法做到這一點? 謝謝。刪除最後一個逗號

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(); 
    } 

} 

輸出:

1.5,2.0,3.0,

3.0,2.5,4.0,

2.5,4.0,2.5,

我最終加入「如果「聲明解決同樣的問題。 這裏是我最後只是:

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(); 
    } 

} 

輸出:

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]); –

回答

1

在你的第二個for循環中,添加一個if語句來檢查它是否是列表的最後一項。如果是,則省略逗號。否則,把逗號。

+1

謝謝,先生。您的評論有幫助,並且我編輯了添加建議解決方案的問題。 –

3

我經常用這個成語對於這個問題 - 讓首次可變comma特(""),然後將其第二次及以後恢復到正常狀態(", "):

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

哦哇...好的解決方案 –

0

您可將商品,而不是之前和之後使用",",並且只需將第一個項目之前不要打印:

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(); 
    } 
} 

您可能還需要到該行存儲在一個變量,這樣你不瞞着重複訪問的Mi個元素:

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

這裏,如果你喜歡流做的很酷的Java 8路。作品與INT /雙陣列:d

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

可以嘗試這

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(); 
} 
} 

基本上它檢查該元素是最後一個陣列中,如果不是,它打印逗號。如果是它不打印逗號。希望這有助於

2

您應該在第二個for循環中使用if else語句。 而不是把逗號放在後面,最好把它放在前面。 示例代碼看起來是這樣的:

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(); 
    } 

} 

代碼將輸出

1,3-

2,3,4-

5,6-

5, 2

相關問題