for문 공부를 위해 많이들 한다는 별찍기를 복습해보았다.
이중 for문으로 행과 열을 구분해 총 4가지 모양의 별을 찍었다.
먼저 본격적인 별찍기에 앞서
준비물(?)로 String 타입의 공백 " "과 "*" 변수가 필요했다.
1
2
3
|
String str1 = " ";
String str2 = "*";
|
cs |
1. 왼쪽으로 치우친 별 찍기(1개씩 증가)
*
* *
* * *
* * * *
1개씩 늘어나는 별찍기는 공백을 사용하지 않아도 돼서 간단하다.
1
2
3
4
5
6
7
8
|
void m1(){
for(int i=1; i<=4; i++){ //행
for(int j=1; j<=i; j++){ //행에 맞춰 별 찍기
System.out.print(str2);
}
System.out.println(); //한 줄 찍고 줄 바꿈
}
}
|
cs |
첫번째 int i를 활용한 for문은 아래로 내려가는 행(줄)을 표현하고
그 안에 들어가는 for문은 열을 표현한다.
행이 4개까지 1개씩 늘어남에 따라 별도 ++시킨 후
한 줄씩 찍을때마다 System.out.println(); 으로 줄 바꿈 시켰다.
*cf) System.out.print(); 은 줄바꿈 없이 옆으로 출력,
System.out.println(); 은 한줄씩 줄을 바꿔가면서 출력한다.
2. 오른쪽으로 치우친 별찍기(1개씩 증가)
오른쪽으로 치우친 별찍기는 공백을 활용해야한다.
먼저 빨간색 세모친 부분처럼 공백이 3개에서 1개로 줄어든 후
별이 1개부터 4개씩 늘어나야 한다.
1
2
3
4
5
6
7
8
9
10
11
|
void m2(){
for(int i=1; i<=4; i++){
for(int j=3; j>=i; j--){ //공백 3개부터 1개씩 줄어들기
System.out.print(str1);
}
for(int k=1; k<=i; k++){
System.out.print(str2);
}
System.out.println();
}
}
|
cs |
공백(위에서 String str1로 정의함)을 int j를 활용한 for문을 이용해 먼저 3개부터 하나씩 줄어들도록 만든 후
별을 int k를 활용해 하나씩 늘어나게 했다.
3. 왼쪽으로 치우친 별 찍기(1개씩 감소)
* * * *
* * *
* *
*
왼쪽으로 치우친 별찍기도 1번과 마찬가지로 공백 없이 비교적 간단하게 찍어낼 수 있다.
1
2
3
4
5
6
7
8
|
void m3(){
for(int i=1; i<=4; i++){
for(int j=4; j>=i; j--){ //별 4개부터 1개씩 줄어들기
System.out.print(str2);
}
System.out.println(); //줄바꿈
}
}
|
cs |
별이 4개부터 1개로 줄어들어야하니
변수 j의 초기값을 4로 놓은 후 j가 i보다 클 때까지 한개씩 줄어들게 만들었다.(i는 4까지 늘어남)
4. 오른쪽으로 치우친 별찍기(1개씩 감소)
오른쪽으로 치우친 별찍기도 2번과 마찬가지로 공백을 활용했다.
빨간색 부분처럼 공백이 1개에서 3개로 늘어난 후
별이 4개부터 1개씩 줄어들어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
|
void m4(){
for(int i=1; i<=4; i++){
for(int k=1; k<i; k++){ //공백 1개부터 3개까지 늘어나기
System.out.print(str1);
}
for(int j=4; j>=i; j--){ //별 4개부터 1개씩 줄어들기
System.out.print(str2);
}
System.out.println();
}
}
|
cs |
1번부터 4번을 메인 메소드에서 호출해보니
결과값이 다음과같이 나왔다.
'Java' 카테고리의 다른 글
Java 타이머 : 멀티스레드를 이용한 10초 타이머 (0) | 2020.12.06 |
---|---|
Java 구구단 : 이중 for문을 이용한 구구단 (0) | 2020.11.23 |
Java 퀴즈 : 주어진 시간동안 문제 맞추는 O,X 퀴즈(멀티 쓰레드 활용) (0) | 2020.11.11 |
Java 멀티로또 : 명단파일, 숫자 입력받아서 숫자만큼 랜덤 뽑기 (0) | 2020.11.09 |
Java 로또 : 랜덤으로 1개 뽑기 (0) | 2020.11.08 |