Dev/Java

Java - 예제 ) 별찍기 02

surimi🍥 2020. 8. 12. 14:11
반응형
별찍기 5번
출력할 줄 수: 5
    *
   ***
  *****
 *******
*********
더보기
import java.util.Scanner;

public class Star5 {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		System.out.println("별찍기 5번");
		System.out.print("출력할 줄 수: ");
		int n = scanner.nextInt();

		for (int i = 1; i <= n; i++) {

			String star = new String();

			//공백을 담당하는 j for 문
			for (int j = n; j > i; j--) {

				star += " ";

			}

			//별을 담당하는 k for 문
			//5번의 별의 갯수는 2 * i - 1개 만큼의 별이 각 줄에 들어가게 된다.
			for (int k = 0; k < i * 2 - 1; k++) {

				star += "*";

			}

			System.out.println(star);

		}

		scanner.close();
	}
}

 

별찍기 6번
출력할 줄 수: 5
*********
 *******
  *****
   ***
    *
더보기
import java.util.Scanner;

public class Star6 {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		System.out.println("별찍기 6번");
		System.out.print("출력할 줄 수: ");
		int n = scanner.nextInt();
//		String star = new String();

		for (int i = n; i > 0; i--) {

			String star = new String();

			// 공백을 담당하는 j for 문
			for (int j = n; j > i; j--) {

				star += " ";

			}

			// 별을 담당하는 k for 문
			// 5번의 별의 갯수는 2 * i - 1개 만큼의 별이 각 줄에 들어가게 된다.
			for (int k = 0; k < i * 2 - 1; k++) {

				star += "*";

			}

			System.out.println(star);

		}

		scanner.close();
	}
}

 

별찍기 7번
출력할 줄 수: 5
*
**
***
****
*****
****
***
**
*
더보기
import java.util.Scanner;

public class Star7 {	

	public static void main(String[] args) {
    
		Scanner scanner = new Scanner(System.in);
        
		System.out.println("별찍기 7번");
		System.out.print("출력할 줄 수: ");
		int userNumber = scanner.nextInt();
		
		for(int i = 1; i <= 2 * userNumber - 1; i++) {
			String stars = new String();
			
			//if문을 통해서 i 가 userNumber  보다 작을때 -> 윗부분
			// 그외 -> 아랫부분이 되게 if-else 구조를 만들어보자
            
			if(i < userNumber) {
				//윗부분 별을 stars에 넣어준다.
				for(int j = 1; j <= i; j++) {
					stars += "*";
				}
                
			}else {
				//아랫부분 별을 stars에 넣어준다.
				//아랫부분의 경우 userNumber가 5면
				//i가 5 6 7 8 9 일때 else로 오게 된다.
				//즉 j = i 로 초기화 하면 우리가 원하는 모양이 나오지 않는다!!!
				
				//따라서 우리는 i를 그대로 쓸 수 없고 
				//대신 아랫부분에 맞게 변수를 만들어서 쓰면 된다!!!
                
				int lowerI = i - userNumber + 1;
				
				for(int j = lowerI; j <= userNumber; j++) {
					stars += "*";
				}
			}
			
			System.out.println(stars);
		}
		
		
		scanner.close();
	}
}









 

별찍기 8번
출력할 줄 수: 5
    *
   **
  ***
 ****
*****
 ****
  ***
   **
    *
더보기
import java.util.Scanner;

public class Star8 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("별찍기 8번");
		System.out.print("출력할 줄 수: ");
		int userNumber = scanner.nextInt();

		for (int i = 1; i <= 2 * userNumber - 1; i++) {
			String stars = new String();

			if (i < userNumber) {
				// 윗부분

				// 공백 담당
				for (int j = 1; j <= userNumber - i; j++) {
					stars += " ";
				}

				// 별 담당
				for (int j = 1; j <= i; j++) {
					stars += "*";
				}
			} else {
				// 아랫부분
				int lowerI = i - userNumber + 1;

				// 공백담당
				for (int j = 1; j <= lowerI - 1; j++) {
					stars += " ";
				}

				// 별담당
				for (int j = lowerI; j <= userNumber; j++) {
					stars += "*";
				}
			}

			System.out.println(stars);
		}

		scanner.close();
	}
}

 

별찍기 9번
출력할 줄 수: 5
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
더보기
import java.util.Scanner;

public class Star9 {
	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);

		System.out.println("별찍기 9번");
		System.out.print("출력할 줄 수: ");
		int userNumber = scanner.nextInt();

		for (int i = 1; i <= 2 * userNumber - 1; i++) {
			String stars = new String();

			if (i < userNumber) {
				// 윗부분

				// 공백 담당 j for 문
				for (int j = 1; j <= userNumber - i; j++) {
					stars += " ";
				}

				// 별 담당 j for 문
				for (int j = 1; j <= 2 * i - 1; j++) {
					stars += "*";
				}
			} else {
				// 아랫부분
				int lowerI = 2 * userNumber - i;
				// 공백 담당 j for 문
				for (int j = 1; j <= userNumber - lowerI; j++) {
					stars += " ";
				}

				// 별 담당 j for 문
				for (int j = 1; j <= 2 * lowerI - 1; j++) {
					stars += "*";
				}
			}

			System.out.println(stars);
		}

		scanner.close();
	}
}

 

 

입력
>5
*********
**** ****
***   ***
**     **
*       *
*       *
**     **
***   ***
**** ****
*********
더보기
import java.util.Scanner;

public class Star10 {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);

		System.out.println("입력");
		System.out.print(">");
		int n = scanner.nextInt();

		// 1 ~ 5 줄
		for (int i = 1; i <= n; i++) {

			String star = new String();

			for (int k = n; k >= i; k--) {

				star += "*";

				if (i == 1 && k == n) {

					star = "";

				}

			}

			for (int j = 2; j < i * 2 - 1; j++) {

				star += " ";

			}

			for (int k = n; k >= i; k--) {

				star += "*";

			}

			System.out.println(star);

		}

		// 6 ~ 9줄
		for (int i = n; i > 0; i--) {

			String star = new String();

			for (int k = n; k >= i; k--) {

				star += "*";

				if (i == 1 && k == n) {

					star = "";

				}

			}

			for (int j = 2; j < i * 2 - 1; j++) {

				star += " ";

			}

			for (int k = n; k >= i; k--) {

				star += "*";

			}

			System.out.println(star);

		}

		scanner.close();
	}
}
import java.util.Scanner;

public class sss {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("별찍기 10번");
		System.out.print("출력할 줄 수: ");
		int userNumber = scanner.nextInt();

		for (int i = 1; i <= 2 * userNumber - 1; i++) {
			String stars = new String();
			if (i == 1 || i == 2 * userNumber - 1) {
				// 첫번째 줄과 마지막 줄은
				// 별이 2*userNumber-1 개가 들어가므로
				// j for 문 1개로 별만 넣어준다.
				for (int j = 1; j <= userNumber * 2 - 1; j++) {
					stars += "*";
				}
			} else if (i < userNumber) {
				// 첫번째 줄과 마지막 줄이 아니고
				// userNumber 보다 작은 경우(=즉 첫줄을 제외한 윗부분)
				// 여기에는
				// i가 2~userNumber -1 까지 들어온다.
				// 하지만 i가 2일때, 실질적으론 여기서 첫번째줄이 된다.
				// 그러므로 변수하나 만들어서 윗부분의 i를 담당하게 해주자!
				int upperI = i - 1;

				// 왼쪽 별 담당 j for 문
				for (int j = 1; j <= userNumber - upperI; j++) {
					stars += "*";
				}

				// 가운데 공백 담당 j for 문
				for (int j = 1; j <= 2 * upperI - 1; j++) {
					stars += " ";
				}

				// 오른쪽 별 담당 j for 문
				for (int j = 1; j <= userNumber - upperI; j++) {
					stars += "*";
				}

			} else {
				// 그 외의 경우(=아랫부분 중 가장 마지막 줄을 제외한 경우)
				int lowerI = i - userNumber + 1;

				// 왼쪽 별을 담당하는 j for 문
				for (int j = 1; j <= lowerI; j++) {
					stars += "*";
				}

				// 가운데 공백을 담당하는 j for 문
				// 여기서 공백의 갯수는 몇개일까?
				// 사실 공백의 갯수는 가로 폭 의 int 값 - 별의 갯수 가 아닐까?
				// 가로폭의 값은? 2 * userNumber - 1
				// 별의 갯수는? 2 * lowerI
				// 가로폭 - 별의 갯수
				// = 2 * userNumber - 1 - 2 * lowerI
				// == 2 * (userNumber - lowerI) - 1;

				for (int j = 1; j <= 2 * (userNumber - lowerI) - 1; j++) {

					stars += " ";

				}

				for (int j = 1; j <= lowerI; j++) {

					stars += "*";
				}

			}

			System.out.println(stars);
		}

		scanner.close();
	}
}
반응형

'Dev > Java' 카테고리의 다른 글

Java - 클래스 이용 차 관리 연습  (0) 2020.08.14
Java - 클래스 ( Class )  (0) 2020.08.14
Java - 예제 ) 별찍기 01  (0) 2020.08.12
Java 예제  (0) 2020.08.11
Java - 무한반복문 ( Infinite Loop )  (0) 2020.08.11