代码之家  ›  专栏  ›  技术社区  ›  TimothyW553

如何从系统中删除尾随空格。出来println();JAVA

  •  0
  • TimothyW553  · 技术社区  · 6 年前

    这是我的代码:

    import java.util.*;
    
    public class Main {
    
    public static void fill(char mat[][], int x, int y, char prevV, char currV) {
        if (x < 0 || x >= mat.length || y < 0 || y >= mat.length)
            return;
        if (mat[x][y] != prevV)
            return;
    
        mat[x][y] = currV;
    
        fill(mat, x + 1, y, prevV, currV);
        fill(mat, x - 1, y, prevV, currV);
        fill(mat, x, y + 1, prevV, currV);
        fill(mat, x, y - 1, prevV, currV);
    }
    
    public static void replace(char mat[][]) {
        for (int i = 0; i < mat.length; i++)
            for (int j = 0; j < mat.length; j++)
                if (mat[i][j] == 'O')
                    mat[i][j] = 'v';
    
        for (int i = 0; i < mat.length; i++)
            if (mat[i][0] == 'v')
                fill(mat, i, 0, 'v', 'O');
        for (int i = 0; i < mat.length; i++)
            if (mat[i][mat.length - 1] == 'v')
                fill(mat, i, mat.length - 1, 'v', 'O');
        for (int i = 0; i < mat.length; i++)
            if (mat[0][i] == 'v')
                fill(mat, 0, i, 'v', 'O');
        for (int i = 0; i <mat.length; i++)
            if (mat[mat.length - 1][i] == 'v')
                fill(mat, mat.length - 1, i, 'v', 'O');
    
        for (int i = 0; i < mat.length; i++)
            for (int j = 0; j < mat.length; j++)
                if (mat[i][j] == 'v')
                    mat[i][j] = 'X';
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        char[][] mat = new char[n][m];
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                mat[i][j] = sc.next().charAt(0);
            }
        }
        replace(mat);
    
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                    System.out.print(mat[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
    

    我遇到的问题部分是主要方法,特别是这一部分:

    for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                    System.out.print(mat[i][j] + " ");
                }
                System.out.println();
            }
    

    我的问题是在每行的末尾都会有一个空格,因为+“”。

    如何删除每行末尾的空白

    P、 如果这个线程已经存在,请将我链接到它,因为大多数空格解决方案都是字符串,并且只是使用。修剪();

    3 回复  |  直到 6 年前
        1
  •  1
  •   Shanu Gupta    6 年前

    当它位于行的末尾时,不要指定空格字符。

    你可以这样写:

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (j < m - 1)
                System.out.print(mat[i][j] + " ");
            else
                System.out.println(mat[i][j]);
        }
    }
    
        2
  •  1
  •   xingbin    6 年前

    为输出空白添加条件:

    for (int j = 0; j < m; j++) {
        System.out.print(mat[i][j]);
        if (j < m - 1) {
            System.out.print(" ");
        }
    }
    
        3
  •  0
  •   Angel Koh Sergey Kalinichenko    6 年前

    除了给出的答案,你还可以这样做

    for(int i = 0; i < n; i++) {
        int j =0; //we move j outside so that it can be accessed later 
        for( ; j < m -1; j++) { //notice we skip the last entry of the row
            System.out.print(mat[i][j] + " ");
        }
        System.out.println(mat[i][j]); //we add the last entry of the row here.
    }
    

    优点是您不需要每次迭代都进行if检查,并且对当前代码的更改也很小。