使用for循环和返回方法打印模式

时间:2015-02-24 22:20:44

标签: java loops for-loop methods return

我正在尝试打印

             a
             bb
             ccc
             dddd

我所拥有的代码并不是我想要的模式,也不确定问题出在哪里。任何帮助都会很棒。

public static String generatRowOfSymbols(char letterOne, char letterTwo){

        char i;
        char j;

        String letters = "";
        String row = "";

        for(i=letterOne; i<= letterTwo; i++  ){


            for(j=letterOne; j<=i; j++){

            row += i ;

            }

            letters += row + "\n";

        }


        return letters;

3 个答案:

答案 0 :(得分:0)

首先,使用StringBuilder - 它更快,更高效。我没有计算长度,但如果你愿意,你可以。其次,看看我对你的方法做出的改变,让我知道它是否有意义。请注意我正在使用系统的行分隔符 - 如果你真的想追加'\ n',请这样做。

正如您应该看到的,我们的第一个for循环遍历字母。第二个是嵌套的,打印出count个字母,每次更改字母时都会增加一个字母。

public static String generatRowOfSymbols(char letterOne, char letterTwo) {
    StringBuilder letters = new StringBuilder();

    int count = 1;
    for (char i = letterOne; i <= letterTwo; i++, count++) {
        StringBuilder row = new StringBuilder(count);
        for (int j = 0; j < count; j++) {
            row.append(i);
        }

        letters.append(row).append(System.lineSeparator());
    }
    return letters.toString();
}

修改

使用String而不是StringBuilder修复了你的问题,因为使用StringBuilder时犹豫不决。

public static String generatRowOfSymbols(char letterOne, char letterTwo) {
    String letters = "";

    int count = 1;
    for (char i = letterOne; i <= letterTwo; i++, count++) {
        String row = "";
        for (int j = 0; j < count; j++) {
            row +=i ;
        }

        letters += row + System.lineSeparator();
    }
    return letters;
}

答案 1 :(得分:0)

public static String generatRowOfSymbols(char letterOne,char letterTwo){

    char i;
    char j;

    String letters = "";



    for(i=letterOne; i<= letterTwo; i++  ){


        for(j=letterOne; j<=i; j++){

        letters +=i;

        }

        letters+= "\n";

    }


    return letters;

答案 2 :(得分:0)

我能想出的最简单的解决方案如下。我使用IntStream但您可以轻松地将其更改为for循环;逻辑是一样的。

public static void printPattern(int rows) {
    IntStream.range(0, rows).forEach(x -> {
        IntStream.range(0, x + 1).forEach(y -> {
            System.out.print((char) ('a' + x));
        });
        System.out.println();
    });
}

假设我们按如下方式使用它。

printPattern(10);

输出:

a
bb
ccc
dddd
eeeee
ffffff
ggggggg
hhhhhhhh
iiiiiiiii
jjjjjjjjjj