본문 바로가기

JAVA

JAVA 여러가지 별찍기 연습!!

반응형
import java.util.Scanner;
public class Day2_sub {
	public static void main(String[] args) {
		
// 1번: 2중 for문을 이용하여 가로 j개에 별을찍은뒤 i만큼 세로로도 별을 찍었습니다.
		System.out.println("-----1-----------------------");
		for(int i=1; i<4;i++) {
			for(int j=1; j<5; j++) {
				System.out.print("*");
			}
			System.out.println();
			}
		System.out.println("-----2-----------------------");
		
// 2번: 2중 for문을 이용하여 j를 x축 i를 y축이라 생각했을때 x의 값이 y의 값보다 작거나 같은 같만 별을 찍었습니다.
		for(int i=1; i<4; i++) {
			for(int j=1; j<4; j++) {
				if(j<=i) {
					System.out.print("*");
				}
			}
			System.out.println();
		}
		System.out.println("-----3-----------------------");
		
/* 3번: 2중 for문을 이용하여 j를 x축 i를 y축이라고 생각했을때 y축 값은 1씩 줄고 x축 값은 1씩 늘어 날때 x축 값이 y축보다 크거나 값은 값만
 		별을 찍어 두었습니다. */		
		for(int i=4; i>1; i--) {
			for(int j=1; j<5; j++) {
				if(j>=i) {
					System.out.print("*");
			}
				else {
					System.out.print(" ");
				}
		}
			System.out.println();
	}
	System.out.println("-----4-----------------------");
		
/* 4번: 처음 공백을 의미하는 bl변수에 첫줄 공백값을 넣어두고 i는 별의 갯수로 생각하고 공백과 별을 repeat을 
	이용하여 찍고 공백을 1씩 줄여가고 별은 2씩 늘려갔습니다.*/
		int bl = 2;
		
		for(int i=1; i<=5; i+=2) {
			System.out.print(" ".repeat(bl));
			System.out.print("*".repeat(i));
			System.out.println();
			bl--;
			
		}
		System.out.println("-----5------------------------");
		
/* 5번: 마름모를 위아래 두개의 삼각형으로 분할하여 생각한뒤 4번과 마찬가지로 공백값 j를 설정하고 i를 별로 생각하여 윗 삼각형을 작성
  	 	아랫 삼각형은 a를 공백 b를 별로 생각하여 작성하였습니다.*/
		int j=2;
		
		for(int i=1; i<=5; i+=2) {
			System.out.print(" ".repeat(j));
			System.out.print("*".repeat(i));
			System.out.println();
			j--;
			}
		
		int a = 1;
		for(int b=3; b>0; b-=2) {
			System.out.print(" ".repeat(a));
			System.out.print("*".repeat(b));
			System.out.println();
			a++;
		}
		System.out.println("-----6------------------------");
		
/* 6번: 5번처럼 다이아몬드를 분할하여 생각하였다. 먼저 다이아몬드의 중앙값을 star로 받아와 첫번째 공백과 중앙값 사이 관계가 /2라는 사실을 알고 
 * 공백에 star/2를 해준뒤 윗삼각형 별은 i 공백은 blank로 설정한뒤 윗삼각형을 작성하였고 아랫 삼각형도 같은 원리로 공백과 별을 설정해둔뒤 
 * for문 조건부분에 마지막 별하나가 찍히기 위해 star2>=i-s처럼 s변수를 하나 만든뒤 빼주었다.*/
		Scanner sc = new Scanner(System.in);
		
		System.out.println("다이아몬드의 중앙값을 입력하세요!!");
		int star =sc.nextInt();
		int blank = star/2;
		
		for(int i=1; i<=star; i+=2) {
			System.out.print(" ".repeat(blank));
			System.out.print("*".repeat(i));
			System.out.println();
			blank--;
		}
		int star2 = star-2;
		int s= 1;
		for(int i=1; star2>=i-s; i+=1) {
			System.out.print(" ".repeat(i));
			System.out.print("*".repeat(star2));
			System.out.println();
			star2-=2;
			s+=1;
		}
	}
}

밑에는 위 코드 결과 값이다!!

아직 자바가 익숙하지 않아서 코드 효율이 조금 떨어지는거 같지만 쉽지 않았다 ㅜㅜ

반응형

'JAVA' 카테고리의 다른 글

쿠키와 세션  (0) 2022.09.05
OSI 7계층(OSI 7Layer)  (0) 2022.09.04