수업

+5 제어문(선택문, 반복문)

hs_developer 2022. 5. 9. 12:41

선택문_1

switch-case

 

public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("첫 번째 정수: ");
		int num1 = sc.nextInt();
		
		System.out.println("두 번째 정수: ");
		int num2 = sc.nextInt();
		
		System.out.println("연산자 입력(+, -, *, /)");
		String op = sc.next(); 
		
		/*
		 * nextInt(): int
		 * nextDouble(): double
		 * next(): String
		 * nextBoolean(): boolean
		 */
		
		switch(op)
		{
			case "+":
				System.out.printf("%d + %d = %d\n", num1, num2, num1+num2);
				break; // break 걸지 않으면 전체가 다 출력 된다
				
			case "-":
				System.out.printf("%d - %d = %d\n", num1, num2, num1-num2);
				break;
				
			case "*":
				System.out.printf("%d * %d = %d\n", num1, num2, num1*num2);
				break;
				
			case "/":
				if(num2 == 0)
					System.out.println("0으로 나눌 수 없다.");
				else
					System.out.printf("%d / %d = %d\n", num1, num2, num1/num2);
				break;
				
			default:
				System.out.println("잘못된 연산자입니다.");
		}
		
	}

 

 

첫 번째 정수: 
10
두 번째 정수: 
5
연산자 입력(+, -, *, /)
/
10 / 5 = 2

 


선택문_2

학점 → 과목 3개 → 평균, 총점, 학점 → 등수

 

 

public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("국어 점수 입력: ");
		int kor = sc.nextInt();
		
		System.out.println("영어 점수 입력: ");
		int eng = sc.nextInt();
		
		System.out.println("수학 점수 입력: ");
		int math = sc.nextInt();
		
		// 국어, 영어, 수학
		System.out.println("국어 점수: " + kor);
		System.out.println("영어 점수: " + eng);
		System.out.println("수학 점수: " + math);
		
		// 총점
		System.out.println("총점: " + (kor + eng + math));
		
		// 평균
		int avg = (kor + eng + math)/3;
		System.out.printf("평균: %.2f\n", (kor + eng + math)/3.0);
		
		// 학점
		// 100-90 A, 89-80 B, 79-79 C, 69-60 D .. F
		// case 100:99:98:97..
		
		
		switch(avg/10) // case 문장 최대한 줄이는 방법
		{
			case 10:
			case 9: // 평균 90대
				System.out.println("학점: A");
				break;
				
			case 8: // 평균 80대
				System.out.println("학점: B");
				break;
				
			case 7: // 평균 70대
				System.out.println("학점: C");
				break;
				
			case 6: // 평균 60대
				System.out.println("학점: D");
				break;
				
			default:
				System.out.println("학점: F");
		}
		
	}

 

국어 점수 입력: 
80
영어 점수 입력: 
90
수학 점수 입력: 
98
국어 점수: 80
영어 점수: 90
수학 점수: 98
총점: 268
평균: 89.33
학점: B

 

 


 

선택문_3

 

// 3, 4, 5 = 봄 / 6, 7, 8 = 여름 / 9, 10, 11 = 가을 / 12, 1, 2 = 겨울
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("달(1-12) 입력: ");
		int month = sc.nextInt();
		
		switch(month)
		{
			case 3: case 4: case 5:
				System.out.println("봄");
				break;
				
			case 6: case 7: case 8:
				System.out.println("여름");
				break;
			
			case 9: case 10: case 11:
				System.out.println("가을");
				break;
				
			case 1: case 2: case 12:
				System.out.println("겨울");
				break;
				
		}
		
	}

 

달(1-12) 입력: 
5

 


선택문_4

중첩 switch-case

 

 

가위 바위 보

 

경우의 수

Computer Player
0 가위 0, 1, 2
1 바위 0, 1, 2
2 보 0, 1, 2

 

가위(0), 바위(1), 보(2): 
0
컴퓨터: 바위 // 랜덤
사용자: 가위 // 입력
Computer Win!!

 

public static void main(String[] args) {
		
		final int 가위 = 0; // final: 상수 → 변경할 수 없는 값
		final int 바위 = 1;
		final int 보 = 2;
		
		
		// 1. 컴퓨터(난수) → 임의로 추출
		int com = (int)(Math.random()*3); // 0, 1, 2
		
		
		// 2. 사용자 입력
		Scanner sc = new Scanner(System.in);
		
		System.out.println("가위(0), 바위(1), 보(2): ");
		int player = sc.nextInt();
		
		
		// 결과 출력
		// 컴퓨터
		switch(com)
		{
			case 0:
				System.out.println("컴퓨터: 가위");
				break;
				
			case 1:
				System.out.println("컴퓨터: 바위");
				break;
				
			case 2:
				System.out.println("컴퓨터: 보");
				break;
		}
		
		// 사용자
		switch(player)
		{
		case 0:
			System.out.println("사용자: 가위");
			break;
			
		case 1:
			System.out.println("사용자: 바위");
			break;
			
		case 2:
			System.out.println("사용자: 보");
			break;
		}
		
		
		// 결과 출력
		switch(com)
		{
			case 가위:
				switch(player)
				{
					case 가위:
						System.out.println("비겼다!!");
						break;
					case 바위:
						System.out.println("Player Win!!");
						break;
					case 보:
						System.out.println("Computer Win!!");
						break;
				}
				break;
				
			case 바위:
				switch(player)
				{
					case 가위:
						System.out.println("Computer Win!!");
						break;
					case 바위:
						System.out.println("비겼다!!");
						break;
					case 보:
						System.out.println("Player Win!!");
						break;
				}
				break;
				
			case 보:
				switch(player)
				{
					case 가위:
						System.out.println("Player Win!!");
						break;
					case 바위:
						System.out.println("Computer Win!!");
						break;
					case 보:
						System.out.println("비겼다!!");
						break;
				}
				break;
		}
		
	}

 

// if문

if(player == 가위)
    System.out.println("Computer Win!!");
if(player == 바위)
    System.out.println("비겼다!!");
if(player == 보)
    System.out.println("Player Win!!");

 


 

 

반복문_for

 

public static void main(String[] args) {
		
		// 알파벳 출력(A-Z)
		for(char c='A'; c<='Z'; c++)
			System.out.println(c);
		
		// 0-9
		for(char c='0'; c<='9'; c++)
		{
			System.out.println(c);
		}
		
		// 0-9
		for(int i=0; i<=9; i++)
		{
			System.out.println(i);
		}
		
	}

 

 

 

// 사용자 입력 값 받아서 → 해당 구구단 출력
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("단(2-9) 입력: ");
		int dan = sc.nextInt();
		
		for(int i=1; i<9; i++) 
		{
			System.out.printf("%d*%d = %d\n", dan, i, dan*i);
		}
		
	}

 

 

단(2-9) 입력: 
7
7*1 = 7
7*2 = 14
7*3 = 21
7*4 = 28
7*5 = 35
7*6 = 42
7*7 = 49
7*8 = 56

 

 


 

 

 

1-100까지의 합

 

public static void main(String[] args) {
		
		int sum=0;
		for(int i=1; i<=100; i++) {
			sum+=i;
			System.out.println("sum=" + sum + ", i=" + i);
		}
		
		System.out.println("1-100까지 합: " + sum);
		
	}

 

sum=1, i=1
sum=3, i=2
.
.
sum=4950, i=99
sum=5050, i=100
1-100까지 합: 5050

 

 


1-100까지의 짝수의 합, 홀수의 합

 

public static void main(String[] args) {
	
		int even=0;
		int odd=0;
		for(int i=1; i<=100; i++)
		{
			if(i%2==0)
				even+=i;
			else
				odd+=i;
		}
		
		System.out.println("1-100까지 짝수의 합: " + even);
		System.out.println("1-100까지 홀수의 합: " + odd);
		
	}

 

 


 

 

 

1-100까지의 3의 배수, 5의 배수, 7의 배수 합

 

 

public static void main(String[] args) {
	
		int a3=0, a5=0, a7=0;
		for(int i=1; i<=100; i++)
		{
			if(i%3==0)
				a3+=i;
			if(i%5==0) // if: 중복 수행 / else if: 중복 수행X
				a5+=i;
			if(i%7==0)
				a7+=i;
		}
		
		System.out.println("1-100까지의 3의 배수 합: " + a3);
		System.out.println("1-100까지의 5의 배수 합: " + a5);
		System.out.println("1-100까지의 7의 배수 합: " + a7);
		
	}

 

1-100까지의 3의 배수 합: 1683
1-100까지의 5의 배수 합: 1050
1-100까지의 7의 배수 합: 735

 

 


 

 

/*
	 * UPDOWN 게임
	 * 
	 * 1. 난수: 1-100 사이의 임의 수 발생
	 * 2. 사용자가 입력해서 난수 맞히기
	 * 
	 * 	힌트
	 * 	UP: 입력 값보다 큰 값
	 * 	DOWN: 입력 값보다 작은 값
	 * 
	 * 	기회 몇 번?
	 * 		맞힐 때까지: 무한 루프 → for(;;)
	 */
	
	
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in);
		
		int com = (int)(Math.random()*100)+1; // 1-100
		
		for(;;)
		{
			// 사용자 입력 값 받기
			System.out.println("1-100 사이의 정수 입력: ");
			int user = sc.nextInt();
			
			if(com > user)
				System.out.println("입력한 값보다 큰 값 입력");
			else if (com < user)
				System.out.println("입력한 값보다 작은 값 입력");
			else 
			{
				// 맞혔을 때
				System.out.println("Game Over!!");
				break; // 종료 시 명령어
			}
		}

 

1-100 사이의 정수 입력: 
50
입력한 값보다 큰 값 입력
1-100 사이의 정수 입력: 
60
입력한 값보다 작은 값 입력
1-100 사이의 정수 입력: 
57
입력한 값보다 작은 값 입력
1-100 사이의 정수 입력: 
55
입력한 값보다 작은 값 입력
1-100 사이의 정수 입력: 
54
입력한 값보다 작은 값 입력
1-100 사이의 정수 입력: 
53
입력한 값보다 작은 값 입력
1-100 사이의 정수 입력: 
52
Game Over!!

 

 


예제

 

1.

100점 만점으로 성적을 입력 받아

90~100이면 A,

80~89이면 B,

70~79이면 C,

60~69이면 D,

60점 이하면 F 출력 (switch ~ case 사용)

 

 

 

public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		
		System.out.println("점수 입력: ");
		int score = sc.nextInt();
		
		switch(score/10)
		{
			case 10:
			case 9:
				System.out.println("A학점입니다.");
				break;
				
			case 8:
				System.out.println("B학점입니다.");
				break;
				
			case 7:
				System.out.println("C학점입니다.");
				break;
				
			case 6:
				System.out.println("D학점입니다.");
				break;
				
			default:
				System.out.println("F학점입니다.");
		}

	}

 

점수 입력: 
70
C학점입니다.

 

 

 


2.

정수 2개와 연산자(+, -, *, /)를 입력 받아 사칙 연산하는 프로그램 만들기 (switch~case 사용)

 

 

public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		
		System.out.println("정수 입력: ");
		int num1 = sc.nextInt();
		
		System.out.println("+, -, *, / 입력: ");
		String op = sc.next();
		
		System.out.println("정수 입력: ");
		int num2 = sc.nextInt();
		
		switch(op)
		{
			case "+":
				System.out.printf("%d + %d = %d\n", num1, num2, num1+num2);
				break;
				
			case "-":
				System.out.printf("%d - %d = %d\n", num1, num2, num1-num2);
				break;
				
			case "*":
				System.out.printf("%d * %d = %d\n", num1, num2, num1*num2);
				break;
				
			case "/":
				if(num2 == 0)
					System.out.println("0으로 나눌 수 없다.");
				else
					System.out.printf("%d / %d = %d\n", num1, num2, num1/num2);
				break;
			
			default:
				System.out.println("해당 연산자가 없습니다.");
		}
		

	}

 

정수 입력: 
8
+, -, *, / 입력: 
*
정수 입력: 
9
8 * 9 = 72

 


 

3.

2+4+6+...100까지의 정수 합 구하고 출력하기 (for 사용)

 

 

 

 

// 내 방식

public static void main(String[] args) {
	
		int a=0;
		for(int i=2; i<=100; i++)
		{
			if(i%2 == 0)
				a+=i;
		}
		
		System.out.println("2+4+..100의 합: " + a);
	
	}

 

 

 

강사 방식 깃헙으로 보기

 

 


 

4.

5, 10, 15...50을 출력하는 프로그램 만들기 (for 사용)

 

5 10 15 20 25 30 35 40 45 50

 

public static void main(String[] args) {
	
		// 1
		for(int i=5; i<=50; i++)
		{
			if(i%5==0)
			System.out.print(i+" ");
			
		}
		
		// 2
		for(int i=5; i<=50; i+=5)
			System.out.println(i + " ");
		
	}

 

 

 


 

5.

B, D, F, H, J, L, N을 출력하는 프로그램 만들기

 

B D F H J L N

 

public static void main(String[] args) {

		for(char c='B'; c<='N'; c++)
		{
			
			if(c%2==0)
			System.out.print(c + " ");

		}
	}

 

 

5번 깃헙 추가

 

 


 

6. 한 개 정수 입력 받아 1부터 입력 받은 정수까지의 합 출력하기

 

정수 입력: 
10
1~10까지의 합: 55

 

public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("정수 입력: ");		
		int num = sc.nextInt();

		int sum = 0;
		for(int i=1; i<=num; i++)
		{
			sum += i;
		}
		
		System.out.println("1~" + num + "까지의 합: " + sum);
	}

 

 


 

7. 

1부터 30까지의 정수에서 짝수만 한 줄에 3개씩 출력하기

 

 2	 4	 6	
 8	10	12	
14	16	18	
20	22	24	
26	28	30

 

public static void main(String[] args) {
		int j=0; // 3개씩 나눠주는 변수
		for(int i=2; i<=30; i+=2)
		{
			if(j%3==0)
				System.out.println();
			
			System.out.printf("%2d\t",i);
			j++;
		}
	}

 

 

 


 

8. 

1-2+3-4+5-6+7-8+9-10 계산 값을 for문을 이용해 출력하기

 

 

1-2+3..-10까지의 합: -5

 

public static void main(String[] args) {

		int sum = 0;
		for(int i=1; i<=10; i++)
		{
			if(i%2==0)
				sum-=i;
			else
				sum+=i;
		}
		
		System.out.println("1-2+3..-10까지의 합: " + sum);
	}

 

 

 

 

 


 

9. 

1~10 사이의 숫자 중 3의 배수를 제외하고 출력하기 (continue 사용)

1 2 4 5 7 8 10

 

public static void main(String[] args) {

		int num;
		for(num=1; num<=10; num++)
		{
			if((num%3) == 0) continue;
			System.out.print(num + " ");
		}

	}

 

 

 

for문 관련 p156-157 참고하면 됨

'수업' 카테고리의 다른 글

+7 배열, 크롤링  (0) 2022.05.11
+6 반복문(2차 for, while)  (0) 2022.05.10
+4 조건문  (0) 2022.05.05
+3  (0) 2022.05.03
+2 변수 선언, 입출력  (0) 2022.04.29