[2021-06-29]Java

SPIDER·2021년 6월 29일
0

Java 공부

목록 보기
9/14
post-thumbnail

9일차(복습)



프로젝트 1

삼각형 그리기
파라미터로 정수형 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문을 사용하여 문자를 계속 더해주는 방법을 사용했지만
변수에 문자*을 담고 단항 연산자++을 사용하여 변수를 계속 더해주고
변수 자체를 출력해주는 방법이 더 편한것같다.




프로젝트 2

피라미드 그리기
파라미터로 정수형 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문을 중첩을 시킬때 무작정 중첩시키는것이 아닌 어떤 부분에서 반복을 더 할것이고 안할것인가에 따라 중첩을 시켜야 한다는 것을 배웠다.

profile
🕷기적을 만드는 개발 기록🕷

0개의 댓글