0313 continue, switch~case

Fifty·2025년 3월 13일

2. JAVA

목록 보기
3/33
post-thumbnail

continue

		for(int i=0; i<10; i++) {
			if(i==5) {
				continue;
			}	
			System.out.print(i+" ");
		}

실행결과: 0 1 2 3 4 6 7 8 9
continue는 continue 이후의 명령문을 건너뛰고 블록의 끝으로 간다.

[예제] 10개의 배열 A에 임의의 숫자가 들어있고,
continue를 사용해서 짝수의 합계만 구해라

		int[] A = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
		int sum =0; 
		
		for(int i=0; i<10; i++) {
			if(A[i]%2!=0) {
				continue;
			}
			sum+=A[i];
		}
		System.out.println(sum);

실행결과: 30

짝수번 인덱스에 있는 값만 구해라.

		for(int i=0; i<A.length; i+=2) {
			sum+=A[i];
		}

실행결과: 25

Swtich ~ case

[예제] 점수에 따라 학점 구하기
90~100점: A
80~89점: B
70~79점: C
60~69점: D
59이하: F

		int score = 46;
		String grade = "";
		
		switch(score/10) {
			case 10: grade="A"; break;
			case 9: grade="A"; break;
			case 8: grade="B"; break;
			case 7: grade="C"; break;
			case 6: grade="D"; break;
			case 5: grade="F"; break;
			default: grade="F"; break;
		}
		
		System.out.println("학점: " + grade);

[예제] 로또 번호 추출기
1~45번까지 -> 배열에 저장
6개까지 고를 수 있음

package ex01;

import java.util.Random;
import java.util.Scanner;

public class Test0313_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int[] lotto = new int[7];
		Random rd = new Random();
		int sameNum = 0;		// 중복값 검사
		
		// 중복값이 없을 때까지 생성
		while(true) {
			for(int i=0; i<7; i++) {
				lotto[i] = rd.nextInt(45)+1;
			}
			
			for(int i=0; i<7; i++) {
				for(int j=i+1; j<7; j++) {
					if(lotto[i]==lotto[j]) {
						sameNum++;
					}
				}
			}
			
			if(sameNum==0)
				break;
		}
		int bonus = lotto[6];
		
		System.out.println("----------------------------");
		System.out.println("        1162회 당첨결과        ");
		for(int i=0; i<6; i++) {
			System.out.print(lotto[i]+" ");
		}
		System.out.println("/ 보너스: "+lotto[6]);
		System.out.println("----------------------------");
		System.out.println("중복숫자 갯수: "+sameNum);
		
		
		// 사용자 입력
		System.out.println("1~45까지 6개의 번호를 입력하세요>>");
		int[] choice = new int[6];
		Scanner sc = new Scanner(System.in);
		for(int i=0; i<6; i++) {
			choice[i] = sc.nextInt();
		}
		// 맞은 개수 카운트
		int sameCnt = 0;
		for(int i=0; i<6; i++) {
			for(int j=0; j<6; j++) {
				if(lotto[i]==choice[j])
					sameCnt++;
			}
		}
		
		System.out.println("----------------------------");
		System.out.println("        추  첨  결  과        ");
		
		
		// 보너스에 따라 2등 혹은 3등으로 분류
		boolean tOrTh = false;
		// 맞은 개수 별 결과 출력
		switch(sameCnt) {
			case 6:
				System.out.println("      당첨번호 "+sameCnt+"개 숫자일치   ");
				System.out.println(" 1등입니다! 당첨금 823,931,021원");
				break;
			case 5:	// 5개 맞았을 경우 보너스에 따라 2등 혹은 3등
				for(int i=0; i<6;i++) {
					if(choice[i]==bonus)
						tOrTh = true;
				}
				if(tOrTh) { 
					System.out.println(" 당첨번호 "+sameCnt+"개 숫자일치 + 보너스 일치 ");
					System.out.println(" 2등입니다! 당첨금 63,379,310원");
				
				}
				else{
					System.out.println("      당첨번호 "+sameCnt+"개 숫자일치   ");
					System.out.println(" 3등입니다! 당첨금 1,040,317원");
				}
				break;			
			case 4:
				System.out.println("      당첨번호 "+sameCnt+"개 숫자일치   ");
				System.out.println(" 4등입니다! 당첨금 50,000원");
				break;
			case 3:
				System.out.println("      당첨번호 "+sameCnt+"개 숫자일치   ");
				System.out.println(" 5등입니다! 당첨금 5,000원");
				break;
			default: System.out.println("낙첨입니다."); break;
		}
		System.out.println("----------------------------");
	}

}

실행결과

근데 중복 숫자를 없애려고 중복을 확인하는 함수를 안쓰고
while을 많이 돌리다보니까 성능이 너무 느림

0개의 댓글