Мне нужно нарисовать елку, используя определенный метод рисования фигур. Для этого мне нужно сделать вложенный цикл. Первый цикл контролирует размер дерева, сегменты которого основаны на пользовательском вводе. Второй вложенный цикл контролирует количество звездочек и пробелов в каждом сегменте.
У меня проблемы с поиском каких-либо ресурсов для решения этой проблемы с использованием метода рисования фигур. Существуют тонны предыдущих сообщений о переполнении стека, в которых другие типы рождественских елок используют циклы, но не в сочетании с методом. Любая помощь приветствуется. Спасибо
<code>import java.lang.Math;
public class ShapeDrawer {
private int size;
/**
* Sets the size variable to a new value
* @param size is the new value for the instance variable
*/
public void setSize(int size) {
this.size = size;
}
/**
* Draws a box on the screen of using size
* For example, if size is 4, the following shape
* would be drawn.
* <pre>
* *...
* **..
* ***.
* ****
*
* /
public void drawBox () {
for (int i = 1; i <= size; i ++) {
writePattern ('*', '.', '', '', '',
i, размер - i, 0, 0, 0, размер);
}
}
/ **
* Рисует линию на экране с использованием размера
* Например, если размер равен 4, следующая форма
* будет нарисовано.
* <pre>
* *
* *
* *
* *
*
* /
public void drawSlantRight () {
for (int i = 1; i <= size; i ++) {
writePattern ('', '*', '', '', '',
i-1, 1, 0, 0, 0, размер);
}
}
/ **
* Рисует наклонную линию на экране, используя размер
* Например, если размер равен 4, следующая форма
* будет нарисовано.
* <pre>
* *
* *
* *
* *
*
* /
public void drawSlantLeft () {
for (int i = 1; i <= size; i ++) {
writePattern ('', '*', '', '', '',
размер - я, 1, 0, 0, 0, размер);
}
}
/ **
* Рисует рождественское дерево на экране, используя размер
* Например, если размер равен 4, следующая форма
* будет нарисовано.
* <pre>
* *
* ***
* ***
* *****
* *****
* *****
* *******
* *******
* *******
* *******
*
* /
public void drawXmasTree () {
for (int i = 1; i <= size; i + = 2) {
writePattern ('', '*', '*', '*', '',
размер - i, i - 4, i, i, 1-i, размер * 2 -1);
}
}
/ **
* записывает строку, состоящую из n1 копий ch1, n2 копий
* ч2, n3 копии ч3, n4 копии ч4 и n5 экземпляров
* из ch5 - но общая длина линии не должна превышать
* длина Если запрошено больше символов длины,
* writePattern молча обрезает строку.
* /
private void writePattern (char ch1, char ch2, char ch3, char ch4, char ch5,
int n1, int n2, int n3, int n4, int n5, int length) {
while ((n1> 0) && (длина> 0)) {
System.out.print (CH1);
n1--;
length--;
}
while ((n2> 0) && (длина> 0)) {
System.out.print (CH2);
n2--;
length--;
}
while ((n3> 0) && (длина> 0)) {
System.out.print (СН3);
n3--;
length--;
}
while ((n4> 0) && (длина> 0)) {
System.out.print (СН4);
n4--;
length--;
}
while ((n5> 0) && (длина> 0)) {
System.out.print (ch5);
n5--;
length--;
}
System.out.println (); / * передвинуть курсор на начало новой строки * /
}
}