연습삼아 반복문 예제의 스테디셀러, 다이아몬드모양 출력코드를 짜보았다.
분명 예전에 해봤던것같은데
머리가 굳어서 그런지 뭐부터 해야할지 감이 안잡혔다.
일단 모양을 잡아줄 공백넣기는 제외하고
별 갯수가 2개씩 증가하는 코드부터 짜기 시작했다.
for (int i=1; i<6; i++) {
for (int j=1; j<i*2 ; j++) {
System.out.print("*");
}
System.out.println("");
}
|
cs |
겨우 완성했다...i는 총 몇줄을 출력할지(행) j는 한줄에 별을 몇개 출력할지의 기준으로 잡았다.
하단부를 완성하기 위해서 별이 2개씩 줄어드는 코드도 추가했다.
for (int i=1; i<6; i++) {
for (int j=1; j<i*2 ; j++) {
System.out.print("*");
}
System.out.println("");
}
for (int i=4; i>0; i--) {
for (int j=1; j<i*2; j++){
System.out.print("*");
}
System.out.println("");
|
cs |
![](https://blog.kakaocdn.net/dn/bLkOxQ/btrgYLGnibA/fK4TOuN0ZOYqO5IQXyl0n1/img.png)
하단부는 증감값만 역순으로 바꿔주면 끝나기 때문에 어렵진 않았다.
이제 빈칸을 삽입해서 모양을 잡을 차례이다.
![](https://blog.kakaocdn.net/dn/cazmIj/btrg1ZKUM0j/bQ1WEeoLjeYEQZEjTS1jT0/img.png)
생각해보니 빈칸도 고정값을 삽입하는게 아니고 줄마다 빈칸값이 달라지는데
이 과정을 뒤로 미루다니 너무 안일한 생각이였다. 결국 코드를 전반적으로 수정해야 했는데
먼저 행도 고정값으로 줬던것을 변수로 지정해서 진행했다.
![](https://blog.kakaocdn.net/dn/ctgjb5/btrgYkvvXSF/3KEGaAKYzjSVmY86Vww1E1/img.png)
완성한것 같은데 이상하게 첫 행의 출력메소드가 스킵되었다.
한눈에 문제점을 알수가 없어 중단점 지정후 디버깅을 돌려보니
첫번째 반복만 스킵된 이유가 있었다.
빈칸삽입 반복문을 추가하는 과정에서 i의 초기값을 1에서 0으로 바꾸었는데
별 출력메소드쪽 반복조건문은 그대로 둬서 첫번째 변수값이 j=0, i=0이 되었던것.
결국 조건문 j < i * 2를 j < i * 2 + 1 으로 수정하니
드디어 상단부 완성...
'Java' 카테고리의 다른 글
같은 문제, 다른 로직 (0) | 2021.10.13 |
---|---|
vscode에서 args[]값 입출력하기 (0) | 2021.10.09 |
개발학습일지 - 4 (0) | 2021.10.05 |
개발학습일지 - 3 (0) | 2021.10.05 |
개발학습일지 - 2 (0) | 2021.10.05 |