JAVA 다양한 별찍기

정대기·2022년 6월 22일
0

JAVA PROGRAMING

목록 보기
5/15
import java.util.Scanner;

public class star {
	
	
	public static void main(String args[]) {
		
		Scanner sc = new Scanner(System.in);
		String star = "*"; 
		String result = "";
		
		System.out.print("원하는 과제를쓰세요 1~6 : ");
		int num = sc.nextInt();
		
		switch (num){ //과제번호를 입력하면 출력하는 형식
		
		case 1:
			System.out.println(one(star, result));
			break;
		
		case 2:
			System.out.println(two(star, result));
			break;
			
		case 3:
			System.out.println(three(star, result));
			break;
			
		case 4:
			System.out.println(four(star, result));
			break;
			
		case 5:
			System.out.println(five(star, result));
			break;
			
		case 6:
			System.out.print("출력할 마름모의 값을 입력하시오 : ");
			int number = sc.nextInt();//마름모의 최대별값 입력받
			if (number % 2 == 1) {//홀수일 경우 6번 과제 출력
				System.out.println(six(number, result));
				break;
			}else {//홀수만 입력받기
				System.out.println("홀수만 입력해주세요!");
				break;
			}
			
		default://과제번호가 없을경
			System.out.println("잘못 입력하였습니다.");
		
		}
	}
	//모든 메소드는 "*"과 "" 을 가지고 result에 별을 추가하는 방식
	public static String one(String star,String result) {
		
		for(int i = 1; i<4; i++) {
			for(int j = 1; j <5; j++) {
				result += star;
				//result에 별을 추가하는작업을 4번하기
			}
			result += "\n";
			//직사각형을 위해 줄바꿈 
		}
		return result;
	}
	
	public static String two(String star, String result) {
		
		for(int i = 1;i<4;i++) {
			for(int j = 0;j < i;j++) {
				//j 반복문에 들어올때마다 i가 커짐 -> 별을 추가하는 작업이 추가됨
				result += star;
			}
			result += "\n";
		}
		return result;
	}
	
	public static String three(String star, String result) {
		for(int i = 1;i < 4;i++) {
			//마름모의 높이만큼 반복
			for(int j = 3-i; j>0; j--) {
				// 높이가 3이고i가 1씩 커질때마다 공백이 줄어듬 
				result += " ";
			}
			result += star.repeat(i);
			//repeat 함수는 파라미터만큼 String을 반복해줌
			result += "\n";
		}
		return result;
	}
	
	public static String four(String star, String result) {
		int j = 2;
		//높이가 고정되있으므로 공백을 2로 고정시키고 반복문 종료시마다 한개씩 줄어듬
		for(int i = 1; i<=5; i+=2) {
			result += " ".repeat(j);
			result +=star.repeat(i);
			result += "\n";
			j--;
			}
		return result;
	}
	
	public static String five(String star, String result) {
		int j = 2;
		int l = 3;
		for(int i = 1; i<=5; i+=2) {
			result += " ".repeat(j);
			result +=star.repeat(i);
			result += "\n";
			j--;
			}//마름모 최대값까지 추가
		for(int k=1; k<3;k++) {
			//k를 공백갯수로 잡고 마름모 밑부분 추가
			result += " ".repeat(k);
			result += star.repeat(l);
			result += "\n";
			l -=2;
		}
		return result;
	}
	
	public static String six(int num,String result) {
		int a = num/2; // num/2를 하면 소수점은 없어지기 때문에 공백값으로 사용
		int l = num/2; // num/2 는 마름모 밑부분 행의 갯수와 동일
		for (int i=1; i<=num; i+=2) {
			result += " ".repeat(a);
			result += "*".repeat(i);
			result += "\n";
			a--;
		}
		for(int k=1;k<l+1;k++) {
			num -= 2;
			result += " ".repeat(k);
			result += "*".repeat(num);
			result += "\n";
		}
		return result;
	}
	
}

0개의 댓글