如何使两个字符行交替排列以形成一个矩形 JAVA

How to make two char rows alternate in order to make a rectangle JAVA

我的代码需要 2 个输入数字来创建矩形的行和列。在那个矩形中,用户为矩形主体选择了 2 个字母,但它们必须交替,如下所示:(没有破折号的 c)

-xxxxx
-r r r r r
-xxxxx
-r r r r

每当我尝试让它们交替出现时,行通常以 "xrxrx" 或 "xrrrr" 而不是单个字母结束。我试过将它们相加 "filler.append(firstLetter + secLetter);" 但结果只是数字。这可能有一个非常简单的解决方案,但我就是看不到哈哈...(·_·;)任何提示将不胜感激,谢谢!

public static void recDraw ( int rows, int columns, char firstLetter, char secLetter){
        StringBuilder filler = new StringBuilder();
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                filler.append(firstLetter);
                filler.append(secLetter);
            }
            filler.append('\n');
        }
        System.out.println(filler);
    }

尝试打印 i 和 j 的值,您会发现错误的地方。

for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                filler.append(firstLetter);
                filler.append(secLetter);
            }
            filler.append('\n');
        }

在上面的代码片段中添加一个检查

i is even, then add firstLetter

i is odd, then add secondLetter

public static void rectDraw(String ch1, String ch2, int cols, int rows) {
    String rect = "";
    for (int i = 0; i < rows; i++) {
        String line = "";
        for (int j = 0; j < cols; j++) {
            if (i % 2 == 0) {
                line += ch1;
            }
            else {
                line += ch2;
            }
        }
        rect += line + "\n";
    }
    System.out.println(rect);
}

这解决了你的问题。您将需要查看模数运算符以获取有关其工作原理的更多信息。你可以看看here.

在内部循环中(带有计数器j),在将字母附加到StringBuilder filler之前,通过对i值进行模运算来检查它是Fistletter行还是SecondLetter行。使用 'i' 值是因为它代表 line/row.

public static void recDraw ( int rows, int columns, char firstLetter, char secLetter){
    StringBuilder filler = new StringBuilder();
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            if(i%2 == 0){
                filler.append(firstLetter);
            } else{
                filler.append(secLetter);
            }
        }
        filler.append('\n');
    }
    System.out.println(filler);
}