Как печатать строки в нескольких строках в порядке убывания?

#java #loops #printing #println

#java #циклы #печать #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), но не знаю как (ни repeat, ни i не сработали). Каков наилучший способ сделать это? Спасибо!

Ответ №1:

Все, что вам нужно сделать, это:

 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

ХХХ

XX

X

Ответ №2:

Вы можете использовать рекурсивную операцию печати для достижения этой цели без циклов.

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

}

Комментарии:

1. OP добавил тег loops , поэтому я полагаю, что они ищут решение на основе цикла.

Ответ №3:

Вы можете использовать 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();
   }
  

Ответ №4:

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