- 3월9일 업로드
package day0308;
//별찍기 10번
import java.util.Scanner;
public class StarsPrint10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("별찍기 10번");
System.out.println("출력 줄 수 입력");
System.out.print(">");
int user = scanner.nextInt();
int maxLength = 2 * user - 1;
for (int i = 1; i <= maxLength; i++) {
String stars = new String();
if (i == 1 || i == maxLength) {
// 첫번째 줄 혹은 마지막 줄이므로
// 별을 9개만 넣어준다.
// 별을 담당하는 j for문
for (int j = 1; j <= maxLength; j++) {
stars += "*";
}
} else {
// 그외의 경우
// 윗부분이건 아랫부분이건
// 별 - 공백 - 별이라는 형태이므로
// if -else 구조를 통해 별의 갯수와 공백의 갯수를 정하고
// j for문 3개를 만들어 각각의 갯수만큼의 별과 공백을
// stars에 추가한다.
// 해당 줄의 별의 갯수를 저장할 int starsWidth
int starWidth = 0;
// 해당 줄의 공백의 갯수를 저장할 int spaceWIdth
int spaceWidth = 0;
// starWidth의 값을 정하는 if-else
if (i < user) {
// 윗부분
//윗부분일때 사용될 int upperI
int upperI = i - 1;
starWidth = user - upperI;
} else {
// 아랫부분
// 아랫부분일때 사용될 int lowerI
int lowerI = i - user + 1;
starWidth = lowerI;
}
//공백의 갯수는 윗부분이건 아랫부분이건
// 총너비 - 왼쪽 별의 갯수 - 오른 쪽 별의 갯수이고
//왼쪽 별의 갯수와 오른쪽 별의 갯수는 둘다 starWidth이다
//따라서 아래와 같이
//공백의 갯수 = 총 너비 - 2 * 별의 갯수로 적어 줄 수 있다.
spaceWidth = maxLength - 2 * starWidth;
// 왼쪽 별을 담당하는 j for문
for (int j = 1; j <= starWidth; j++) {
stars += "*";
}
// 가운데 별을 담당하는 j for문
for (int j = 1; j <= spaceWidth; j++) {
stars += " ";
}
// 오른쪽 별을 담당하는 j for문
for (int j = 1; j <= starWidth; j++) {
stars += "*";
}
}
System.out.println(stars);
}
scanner.close();
}
}
'JAVA > 국비 공부' 카테고리의 다른 글
3월9일 수업(로또01) (0) | 2021.03.09 |
---|---|
3월9일수업(배열) (0) | 2021.03.09 |
3월8일수업(별찍기09) (0) | 2021.03.08 |
3월8일 수업(별찍기08) (0) | 2021.03.08 |
3월8일(별찍기07) (0) | 2021.03.08 |