2017-02-09 288 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