如何以递减顺序打印多行中的字符串?

问题描述 投票:2回答:5

我正在使用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分配的循环中),但不知道如何(既不重复也不重复)。最好的方法是什么?谢谢!

java loops printing println
5个回答
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
投票

你可以在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();
   }

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);
}

}


0
投票

尝试使用两个内部循环:

public static void main(String[] args) {
        String s = "X";

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

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

 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();
                });
}

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.