如何制作一个行数为1、3、5、3、7、5、7、9、7…的圣诞树。。。?
圣诞树应该是这样的:
x
xxx
xxxxx
xxx
xxxxx
xxxxxxx
xxxxx
xxxxxxx
xxxxxxxxx
xxxxxxx
xxxxxxxxx
xxxxxxxxxxx
它要求用户输入行数。到目前为止我已经知道了。更早制造了一个pyrmamid*
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
第一步可能是抽象东西。我的意思是,制作一种只打印这棵树的一行的方法:
private static void branch(int width,int centerPoint) {
for (int i = 0; i < centerPoint - width / 2; i++) {
System.out.print(' ');
}
for (int i = 0; i < width; i++) {
System.out.print('x');
}
}
然后你可以制作一棵你喜欢的任何形状的树:
public static void main(String... args) {
System.out.println("Hvor mange rader skal pyramiden ha?");
Scanner scanner = new Scanner(System.in);
int numRows = scanner.nextInt();
int width = 1;
for (int i = 0;i < numRows;i++) {
branch(width,numRows / 3 + 2);
if (width % 3 == 2)
width -= 2; //Reduces the width by 2 if it's line 2, 5, 8, etc.
else
width += 2; //Other lines, increases the width by 2.
}
}
开始吧!
String x = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
int ix = x.indexOf('x');
for (int i = 0; i < 12; i++) {
int j = i/3 + i%3;
System.out.println(x.substring(j, ix + 2*j + 1));
}
输出
x
xxx
xxxxx
xxx
xxxxx
xxxxxxx
xxxxx
xxxxxxx
xxxxxxxxx
xxxxxxx
xxxxxxxxx
xxxxxxxxxxx