如何以降序打印多行字符串?

时间:2019-04-20 11:17:04

标签: java loops printing println

我正在使用Java 8,我需要获取以下输出:
XXXXX
XXXX
XXX
XX
X

其中“ X”是字符串。

我写了一个简单的代码:

String s = new String ("X");  
int j = 5;
for (int i = 0; i<5; i--)
{
    System.out.println(s);
j--;

    if (j < 1) 
            break;

自然地,得到这个:

X
X
X
X
X

我知道我需要以某种方式使Java重复打印字符串i次(在为我分配的循环中),但是不知道如何重复(无论重复还是\ i都不起作用)。 最好的方法是什么? 谢谢!

5 个答案:

答案 0 :(得分:4)

您需要做的是:

final String s = "X";
for (int i = 5; i > 0; i--) {
    for (int j = 0; j < i; j++) {
        System.out.print(s);
    }
    System.out.println();
}

输出:

  

XXXXX

     

XXXX

     

XXX

     

XX

     

X

答案 1 :(得分:1)

您可以在while内使用for循环

  String s = "X";
    for (int i = 5; i > 0; i--) {
        int j=0;
        while(i>j++)
            System.out.print(s);
        System.out.println();
   }

答案 2 :(得分:0)

尝试两个内部循环:

 public static void main(String[] args) {
        final String s = "X";
        IntStream.iterate(5, operand -> operand - 1)
                .limit(5)
                .forEach(value -> {
                    IntStream.range(0, value)
                            .forEach(val2 -> System.out.print(s));
                    System.out.println();
                });
}

使用Java 8流的另一种解决方案

7fc00000

答案 3 :(得分:0)

您可以使用递归打印操作来实现此目的而无需循环。

import java.util.Collections;

public class Test {

public static void main(final String[] args) {
    recursiveTriangle(10);
}

public static void recursiveTriangle(final int length) {
    if (length <= 0 ) {
        return;
    }

    System.out.println(String.join("", Collections.nCopies(length, "X")));

    recursiveTriangle(length-1);
}

}

答案 4 :(得分:0)

concat这是另一个选择:

String s = "";
for (int i = 5; i>0; i--) {
    String s1 = "";
    for (int j = i; j > 0; j--){
        s1 += s.concat("X");
    }
    System.out.println(s1);
}