Java – draw a Christmas tree with “X”
I'm trying some online exercises in Java I have done a lot of exercises, but if n = 4, I will stick to an exercise that gives a given n (where n is the input from the user) and draw a Christmas tree as follows:
X X XXX X XXX XXXXX X XXX XXXXX XXXXXXX
I can't seem to get around the loop This is what I have done so far:
public class Test {
public double org,mes;
public test() {
}
private static void drawChristmasTree(int n) {
if (n == 1) {
System.out.println("X");
} else {
for (int p = 1; p <= n; p++) {
for (int i = 1; i <= n; i++) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < (2 * i - 1); j++) {
//System.out.println("X");
System.out.print("X");
}
System.out.println();
}
}
}
}
public static void main(String[] args) {
drawChristmasTree(4);
}
}
Solution
It is very good to write a triangle method and then call it in the method when creating Christmas tree.
public static void main(String[] args) {
drawChristmasTree(4);
}
private static void drawChristmasTree(int n) {
for (int i = 0; i < n; i++) {
triangle(i+1,n);
}
}
private static void triangle(int n,int max){
for (int i = 0; i < n; i++) {
for (int j = 0; j < max-i-1; j++) {
System.out.print(" ");
}
for (int j = 0; j < i*2+1; j++) {
System.out.print("X");
}
System.out.println("");
}
}
The only difference you must consider is the number of spaces used This is the maximum parameter because only by making triangles of some sizes inconsistent with the space of other triangles
Therefore, no matter how large a triangle you build, you must always consider the largest triangle (the last) and how much space you need
The method of making only pure triangles is as follows: (only the difference of changing max-i-1 to n-i-1)
private static void triangle(int n){
for (int i = 0; i < n; i++) {
for (int j = 0; j < n-i-1; j++) {
System.out.print(" ");
}
for (int j = 0; j < i*2+1; j++) {
System.out.print("X");
}
System.out.println("");
}
}
Output with tree size 10:
X
X
XXX
X
XXX
XXXXX
X
XXX
XXXXX
XXXXXXX
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXX
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXXX
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXXXX
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
