如何使用循环减少每行中打印的(相同)字符数?

时间:2019-02-22 18:21:30

标签: java string loops

基本上,我正在尝试打印字符行,特别是星号。随后的每一行应比前一行少一个星号。此外,它们都应与对齐。 我对Java的知识不是很强,所以请多多包涵。

以下是输出和说明的图片:

enter image description here

2 个答案:

答案 0 :(得分:1)

让我们从一个简单的示例开始:

***
 **
  *

您看到什么模式?模式是在每一行上,星号数量和空格数量的总和是恒定的。我现在将这个常量称为L,它表示行长
由此,我们可以推断出amountOfSpacesL - amountOfAsterisks,反之亦然(因为代数的神奇定律也适用于此)。

因此,我们可以推断出,在每一行上我们需要先打印L - amountOfAsterisks个空格,然后再打印amountOfAsterisks。对于这样的情况,for循环可以节省生命(在更专业的代码中(您可能会从花哨的终端图形上获得专业知识),这样做会有所不同,实际上是使用for -loops这样的东西使函数O(N))。

其余的取决于您

答案 1 :(得分:0)

可以根据需要修改变量。关键是使用一堆for循环并跟踪所有变量。

for (int i = 0; i < 8; i++) { //line number your on
    for(int k = 0; k<i;k++)//keeps track of number of spaces to use, line number minus 1 spaces printed
    {
    System.out.print(" ");
    }
for (int j = 8; j >i; j--) {//prints out 8 * and reduced by 1*line number
System.out.print("*"); 
}
System.out.println();//prints new line and initiates new line by i++
}