如何在 Java 中使用 StringBuilder

How do I use StringBuilder in Java

我在一种方法中使用 stringbuilder 来打印出我存储在数组中的数据的表示形式。所以代码看起来像这样:

public String toString(){
    StringBuilder S = new StringBuilder(numRows * (num(ols + 1)));
    for(int i = 0; i < numRows; i++){
        for(int j = 0; j < numCols; j++){
            if (x[i][j] == ('*')){
                System.out.print('*');
            } else {
                System.out.print(' ');
            }

            System.out.println();
        }
    }

问题是我的编译器在行中找不到符号 ols

StringBuilder S = new StringBuilder(numRows*(num(ols+1)));

我以前从未使用过 StringBuilder,所以我想知道我如何完成这项工作,我什至需要 StringBuilder,因为我想做的就是打印出我想要的数据表示形式已经存储在一个数组中。

看for循环体,我猜

StringBuilder S = new StringBuilder(numRows*(num(ols+1)));

应该是

StringBuilder S = new StringBuilder(numRows*(numCols+1));

这可能不是您要构建的最终字符串,但这里有一个使用 StringBuilder 的示例(我将名称从 S 更改为 sb,因为使用小写字母更常见变量名称的字母,为 class 名称和常量保留大写。)

class Foo {
    int numRows = 3;
    int numCols = 2;
    char[][] x = new char[][] { { 'a', '*' }, { 'x', 'y' }, { '*', '#' } };

    public String toString() {
        StringBuilder sb = new StringBuilder(numRows * (numCols + 1));
        for(int i = 0; i < numRows; i++){
            for(int j = 0; j < numCols; j++){
                if (x[i][j] == ('*')) {
                    sb.append('*');
                    System.out.print('*');
                } else {
                    sb.append(' ');
                    System.out.print(' ');
                }
                System.out.println();
            }
        }
        return sb.toString();
    }


    public static void main(String[] args) {
        Foo foo = new Foo();
        System.out.println(foo.toString());
    }
}