java - 我如何制作一棵圣诞树,其线条为 1、3、5、3、5、7、5、7、9、7、9

标签 java

如何制作一棵线条为 1、3、5、3、5、7、5、7、9、7、9... 的圣诞树?

圣诞树应该是这样的:

               x
              xxx
             xxxxx
              xxx
             xxxxx
            xxxxxxx
             xxxxx
            xxxxxxx
           xxxxxxxxx
            xxxxxxx
           xxxxxxxxx
          xxxxxxxxxxx

它要求用户输入行数。到目前为止我已经知道了。早先做了一个金字塔*

import java.util.Scanner;

public class Pyramide {

    public static void main(String[] args) {

        // les inn antall rader
        System.out.println("Hvor mange rader skal pyramiden ha?");

        int antallRader;
        Scanner tastatur = new Scanner(System.in);
        antallRader = tastatur.nextInt();

        // skrive ut en kolonne som har saa mange rader som det ble angitt
        // for hver verdi som rad kan faa naar rad starter paa 1, er mindre
        // eller lik antallRader, og oekes hver gang med 1)

        // for hver verdi mellom startverdien og sluttverdien med avstand 1
        // gjenta
        for (int rad = 1; rad <= antallRader; rad++) {
            for (int antallTomt = 1; antallTomt <= antallRader - rad; antallTomt++) {
                System.out.print(" ");
            }
            for (int antallX = 1; antallX <= 2 * rad - 1; antallX++) {
                System.out.print("x");
            }
            for (int antallX = 1; antallX <= 2 * rad - 1; antallX++) {
                System.out.print("x");
            }
            System.out.println();
        }

    }

}

我认为它是一个以某种方式变为 +2、+2、-2 的循环。但我不知道如何编程。

最佳答案

你们非常亲密。请考虑:

int linjer = 0;
int radDenneGang = 1;
while (linjer < antallRader) {
    int antallRaderDenneGang;
    if (antallRader - linjer >= 3)
        antallRaderDenneGang = radDenneGang + 2;
    else
        antallRaderDenneGang = radDenneGang + antallRader - linjer - 1;
    for (int rad = radDenneGang; rad <= antallRaderDenneGang; rad++) {
        for (int antallTomt = 1; antallTomt <= antallRader - rad; antallTomt++) {
            System.out.print(" ");
        }
        for (int antallX = 1; antallX <= 2 * rad - 1; antallX++) {
            System.out.print("x");
        }
        // for (int antallX = 1; antallX <= 2 * rad - 1; antallX++) {
        // System.out.print("x");
        // }
        System.out.println();
    }
    linjer += antallRaderDenneGang - radDenneGang + 1;
    radDenneGang++;
}

使用 antallRader=15,它会生成以下美丽的圣诞树:

          x
         xxx
        xxxxx
         xxx
        xxxxx
       xxxxxxx
        xxxxx
       xxxxxxx
      xxxxxxxxx
       xxxxxxx
      xxxxxxxxx
     xxxxxxxxxxx
      xxxxxxxxx
     xxxxxxxxxxx
    xxxxxxxxxxxxx

关于java - 我如何制作一棵圣诞树,其线条为 1、3、5、3、5、7、5、7、9、7、9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523192/

相关文章:

java - 如何从谷歌地图网址获取经纬度

java - 无法在recyclerview(cardview)上设置onclick

java - 如何遍历通配符泛型?

java - 当您事先不知 Prop 体的消息类型是什么时,如何使用 Protocol Buffers 从 InputStream 进行解析?

java - xml 到 java 的翻译

java - 我的密码程序的 while 循环和字符串比较

java - Android:在 Eclipse 的图形布局编辑器中自由移动按钮

Mustache 生成的 Restful API 中的 Java 函数参数

c# - Java原子整数和C#Interlocked.Increment方法的区别

java - Crawler4j在shouldVisit()和visit()方法中显示不同的URL名称