삼각형 그리기
파라미터로 정수형 height를 받이서 높이가 height이고 문자*로 이루어진
직각 이등변 삼각형을 만들어보자
## 반복문을 활용하여 문자 *을 출력한다.
## 한줄마다 문자 *가 추가되므로 이것 또한 반복문을 사용하여 더해준다.
public class ShapePrinter {
public void printTriangle(int height) {
// 코드를 입력하세요.
int i=0;
while(i<height){
int k=0;
while(k<=i){
System.out.printf("* ");
k++;
}
i++;
System.out.println("");
}
}
메소드 부분은 while문 두개를 중첩시켰다.
첫번째 while문은 삼각형의 높이를 이루는 행 개수를 조절하는 역할이고
두번째 while문은 처음*이 나온 후로 그 뒤로 몇개의 *이 더 나올것인지 조절하는 역할이다
두번쨰 while문이 끝나면 줄바꿈을 위해
System.out.println("");
을 적어주었다.
public class Main {
public static void main(String[] args) {
ShapePrinter printer = new ShapePrinter();
// 테스트
printer.printPyramid(3);
System.out.println("----------");
printer.printPyramid(5);
System.out.println("----------");
printer.printPyramid(10);
}
}
높이가 3, 4, 10인 직각 삼각형을 테스트 하기 위한 main 메소드이다.
나는 while문을 사용하여 문자를 계속 더해주는 방법을 사용했지만
변수에 문자*을 담고 단항 연산자++을 사용하여 변수를 계속 더해주고
변수 자체를 출력해주는 방법이 더 편한것같다.
피라미드 그리기
파라미터로 정수형 height 를 받아서 높이가 height이고 문자*로 이루어진 피라미드를 만들어보자
## 프로젝트1과 마찬가지로 반복문을 사용하여 문자*을 출력한다
## 문자*전에 공백 " "을 먼저 출력해야 하므로 반복문을 하나 추가하여 반복문 3개를 중첩시켜 사용한다
public class ShapePrinter {
public void printPyramid(int height) {
int i=1;
while(i<=height){
int k=0;
int j=1;
while(k+i<height){
System.out.printf(" ");
k++;
}
while(j<=2*i-1){
System.out.printf("*");
j++;
}
System.out.println();
i++;
}
}
}
첫번째 while문에서는 피라미드의 높이를 이루는 행 개수를 조절하였고
두번째 while문에서는 첫번째 while문 안에 작성하여 각 행에 따른 공백을 조절하였다.
세번째 while문에서는 두번째와 마찬가지로 첫번째 while문 안에 작성하여 각 행에 따른 문자* 을 조절하였다.
public class Main {
public static void main(String[] args) {
ShapePrinter printer = new ShapePrinter();
// 테스트
printer.printTriangle(3);
System.out.println("----------");
printer.printTriangle(5);
System.out.println("----------");
printer.printTriangle(10);
}
}
높이가 3, 4, 10인 피라미드를 테스트 하기 위한 main 메소드이다.
WIU(What I Understand)
while문 안에 있는 증감제어식 인 i++, j++이 어디 위치하느냐에 따라 결과가 확연히 달라지는것을 깨달았고,
while문을 중첩을 시킬때 무작정 중첩시키는것이 아닌 어떤 부분에서 반복을 더 할것이고 안할것인가에 따라 중첩을 시켜야 한다는 것을 배웠다.