删除最后一个逗号

时间:2017-02-09 03:03:13

标签: java arrays string

我正在尝试从我的print方法中删除最后一个逗号。有没有办法做到这一点? 谢谢。

    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,

我最后添加了一个“if”语句来解决同样的问题。 以下是我最终如何做到这一点:

    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

6 个答案:

答案 0 :(得分: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 :(得分:2)

您应该在第二个if else循环中使用for语句。 而不是把逗号放在后面,最好把它放在前面。 示例代码如下所示:

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

答案 2 :(得分:1)

在第二个for循环中,添加一个if语句,检查它是否是列表的最后一项。如果是,请省略逗号。否则,请加上逗号。

答案 3 :(得分: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();
}
}

基本上它检查元素是否是数组中的最后一个,如果不是,则打印逗号。如果它不打印逗号。希望这有帮助

答案 4 :(得分: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();
    }
}

您可能还希望将行存储在变量中,这样您就不会反复访问i M元素:

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

答案 5 :(得分:0)

如果您喜欢流,那么这是一种很酷的Java 8方式。使用int / double数组:D

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