본문 바로가기

자바 JAVA

switch문 연습을 위한 예제풀이 ㅡ 자바 기초

잘못된 부분이 있다면 댓글남겨주시면 반영하겠습니다.

 

문제 1) 아래의 메뉴를 보여주고, 선택한 메뉴를 알려주는 프로그램 작성

 

출력예) 1. 삽입

            2. 수정

            3. 삭제

입력예) 숫자를 선택하세요. : 2

출력예) 수정을 선택하셨습니다.

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
	
		System.out.println("1. 삽입");
		System.out.println("2. 수정");
		System.out.println("3. 삭제");

		System.out.print("숫자를 선택하세요. : ");
		int a = scn.nextInt();
		String b = "";
		String c = "%s 선택하셨습니다.";

		switch(a)
		{
			case 1 :
			b = "삽입을";
			break;
			case 2 :
			b = "수정을";
			break;
			case 3 :
			b = "삭제를";
			break;
			default :
			c = "입력값이 잘못되었습니다.";
		}
		System.out.printf(c, b);
	}
}

 

문제 2) 영문 대문자를 입력받아 'A'이면 "훌륭합니다.", 'B'이면 "좋습니다.", 'C'이면 "보통입니다.", 'D'이면 "노력하세요.", 그이외문자는 "잘못입력하셨습니다."라고 출력하는 프로그램

 

입력예) B
출력예) 좋습니다.

 

package Sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		
		String d = scn.next();
		String c = "";
		
		char b = d.charAt(0);
		int a = d.length();
		
		if(a==1)
		{
			switch(b)
			{
				case 'A' :
					c = "훌륭합니다.";
					break;
				case 'B' :
					c = "좋습니다.";
					break;
				case 'C' :
					c = "보통입니다.";
					break;
				case 'D' :
					c = "노력하세요.";
					break;
				default :
					c = "잘못입력하셨습니다.";
			}
		}
		else
		{
			c = "한글자만 입력하세요.";
		}
		System.out.print(c);
	}
}

 

 

* 여기서 a, b 변수 선언에 유의해야합니다.

 

char b = scn.next().charAt(0);
int a = scn.next().length();

 

이렇게 표현할 수도 있지 않을까 싶겠지만, 이 코드는 전혀 다른 의미를 가지고 있습니다.

이것은 a, b 변수에 각각 입력값 한개씩 총 두개의 입력값을 받는다는 의미입니다.

 

위의 전체코드에서 볼 때, 하나의 입력값으로부터 a, b 변수를 도출해내는 것이 원하는 방향이기때문에

d 변수를 활용하여 다음과 같이 선언해야합니다.

 

char b = d.charAt(0);
int a = d.length();

문제 3) 점수를 입력 받아 "수우미양가"를 평가하는 프로그램

 

입력예) 점수를 입력하세요. : 92
출력예) 수

 

package Sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		
		System.out.print("점수를 입력하세요. : ");
		int score = scn.nextInt();
		String grade = "가";
		
		if(score>=0 && score<=100)
		{
			switch(score/10)
			{
				case 10 :
				case 9 :
					grade = "수";
					break;
				case 8 :
					grade = "우";
					break;
				case 7 :
					grade = "미";
					break;
				case 6 :
					grade = "양";
			}
		}
		else
		{
			grade = "점수값이 잘못되었습니다.";
		}	
		System.out.print(grade);
	}
}

 

문제 4) 현재 월을 입력 받아 입력받은 월에 해당하는 계절을 출력하는 프로그램

 

3~5월 "현재 계절을 봄입니다."
6~8월 "현재 계절은 여름입니다."
9~11월 "현재 계절은 가을입니다."
12월~2월 "현재 계절은 겨울입니다."

입력예) 현재 월을 입력하세요. : 3
출력예) 현재 계절은 봄입니다.

 

package Sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		
		System.out.print("현재 월을 입력하세요. : ");
		int month = scn.nextInt();
		
		String season = "겨울";
		String a = "현재 계절은 %s입니다.";
		
		if(month>0 && month<13)
		{
			switch(month/3)
			{
				case 1 :
					season = "봄";
					break;
				case 2 :
					season = "여름";
					break;
				case 3 :
					season = "가을";
					break;
			}
		}
		else
		{
			a = "입력값이 잘못되었습니다.";
		}
		System.out.printf(a, season);
	}
}

 

문제 5) 가위바위보 게임

 

가위(1), 바위(2), 보(3)을 입력받고 컴퓨터는 random으로 발생하여 가위바위보 게임을 진행합니다.
입력예) 가위(1), 바위(2), 보(3) 중 하나를 입력하세요. : 1
출력예) 당신은 1입니다.
            컴은 1입니다.
            비겼습니다.
입력예) 가위(1), 바위(2), 보(3) 중 하나를 입력하세요. : 1
출력예) 당신은 3입니다.
            컴은 2입니다.
            당신이 이겼습니다.

 

package Sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		
		System.out.print("가위(1), 바위(2), 보(3) 중 하나를 입력하세요. : ");
		int user = scn.nextInt();
		int com = (int)(Math.random()*3)+1;
		
		System.out.printf("당신은 %d입니다.\n", user);
		System.out.printf("컴은 %d입니다.\n", com);
		
		String a = "";
		
		if(user>0 && user<4)
		{
			switch(user-com)
			{
				case 0 :
					a = "비겼습니다.";
					break;
				case 1, -2 :
					a = "당신이 이겼습니다.";
					break;
				case 2, -1 :
					a = "컴이 이겼습니다.";
					break;
			}
		}
		else
		{
			a = "입력값이 잘못되었습니다.";
		}
		System.out.print(a);
	}
}

 

문제 6) 주민등록번호를 입력받아 남자인지 여자인지 구분하는 프로그램

 

입력예) 당신의 주민번호를 입력하세요. : 123456-3123123
출력예) 당신은 여자입니다.

 

package Sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		
		System.out.print("당신의 주민번호를 입력하세요. : ");
		char a = scn.next().charAt(7);
		String b = "당신은 %s입니다.";
		String gender = "";
		
		switch(a)
		{
			case '1', '3' :
				gender = "남자";
				break;
			case '2', '4' :
				gender = "여자";
				break;
			default :
				b = "입력값이 잘못되었습니다.";
		}
		System.out.printf(b, gender);
	}
}

문제 7) 1번은 강아지, 2번은 고양이, 3번은 병아리로 정하고 번호를 입력하면 번호에 해당하는 동물을 영어로 출력하는 프로그램

 

해당번호가 없으면 "번호가 잘못되었습니다."
강아지 - dog, 고양이 - cat, 병아리 - chick
입력예) 번호를 입력하세요. : 2
출력예) cat

 

package Sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		
		System.out.print("번호를 입력하세요. : ");
		int a = scn.nextInt();
		String b = "";
		
		switch(a)
		{
			case 1 :
				b = "dog";
				break;
			case 2 :
				b = "cat";
				break;
			case 3 :
				b = "chick";
				break;
			default :
				b = "번호가 잘못되었습니다.";
		}
		System.out.print(b);
	}
}

 

문제 8) 년도와 월을 입력 받아 해당년도가 윤년이면 2월을 29일로 출력하는 프로그램 (예외처리 고려하지않음)

 

입력예) 2020 2
출력예) 2020년은 윤년으로 29일 입니다.
입력예) 2021 2
출력예) 2021년은 평년으로 28일 입니다.

 

package Sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		
		int year = scn.nextInt();
		int month = scn.nextInt();
		int day = 31;
				
		boolean a = year%400==0;
		boolean b = year%4==0 && year%100!=0;
		
		String c = "";
		
		c = (b || a)?"윤년":"평년";

		switch(month)
		{
			case 2 :
				if(c.equals("윤년"))
				{
					day = 29;
				}
				else
				{
					day = 28;
				}
				break;
			case 4, 6, 9, 11 :
				day = 30;
		}
		System.out.printf("%d년은 %s으로 %d일 입니다.", year, c, day);
	}
}