본문 바로가기

Java

Java(4) - 조건문(switch-case 문), 반복문(for 문)

728x90
반응형

<목차>

1) 조건문

   1-1) switch-case 문

   1-2) 예제 코드

2) 반복문

   2-1) for 문

3) eclipse 실습 코드

 

 

 

 

1) 조건문

1-1) switch-case 문

switch(변수) {
    case(값):       --> 변수의 값이 해당 값과 일치하면 수행되는 코드
        수행할 문장1
        break;
    case(값):
        수행할 문장2
        break;
...
    default:        --> 변수의 값이 어느 쪽도 일치하지 않으면 수행되는 코드
        수행할 문장
        break;
}

 

 

1-2) 예제 코드

SwitchTest1.class

package chapter04.condition;

public class SwitchTest1 {

	public static void main(String[] args) {
		int ranking = 2;
		
		switch (ranking) {
		case 1:
			System.out.println("금메달");
			break;
		case 2:
			System.out.println("은메달");
			break;
		case 3:
			System.out.println("동메달");
			break;
		default:
			System.out.println("참가상");
			break;
		}

	}

}

 

 

 

 

SwitchTest2.class

package chapter04.condition;

public class SwitchTest2 {

	public static void main(String[] args) {
		int ranking = 2;
		
		switch (ranking) {
		case 1:
			System.out.println("대상");
			break;
		case 2: case 3: // case 2, 3일 때 모두 "우수상"을 출력함!!
			System.out.println("우수상");
			break;
		case 4: // case 4, 5일 때 모두 "장려상"을 출력함!!
		case 5:
			System.out.println("장려상");
			break;
		}
		
		// 병합처리
		int days;
		int month = 5;
		
		switch (month) {
		    case 2:
		    	days = 28;
		    	break;
		    case 4: case 6: case 9: case 11:
		    	days = 30;
		    	break;
		    default:
		    	days = 31;
		    	break;
		}
		System.out.println(month + "월은 " + days + "일");

	}

}

 

 

 

 

SwitchTest3.class

package chapter04.condition;

public class SwitchTest3 {

	public static void main(String[] args) {
		String country = "china";
		
		switch (country) {
		case "korea":
			System.out.println("Seoul");
			break;
		case "china":
			System.out.println("Beijing");
			break;
		case "japan":
			System.out.println("Tokyo");
			break;
		}
		
		// 문자열 비교
		String a = new String("안녕");
		String b = new String("안녕");
		String c = "안녕";
		String d = "안녕";
		
		System.out.println(a == b); // 주소값 비교
		System.out.println(a.equals(b)); // 내용 비교
		System.out.println(c == d); // 주소값 비교
		System.out.println(c.equals(d)); // 내용 비교

	}

}

 

 

 

* 참조형 데이터의 경우, 주소와 주소를 비교하기 위해서는 “==”가 아닌 “.equals()” 메소드를 사용해야 함!

 

- 문자열은 자주 사용하기 때문에 ‘Heap’ 내부에 “문자열 상수풀”이라는 공간이 있는데 문자열을 변수에 할당할 시 해당 문자열이 이미 문자열 상수풀에 있을 경우에는 해당 문자열의 주소를 동일하게 참조한다!

(단, new 키워드를 통해 새로운 객체변수를 생성할 시 해당 객체변수에 문자열을 값으로 할당할 경우에는 문자열 상수풀이 아닌 Heap 내부에 새로 각각 공간이 할당되어 서로 다른 주소값이 부여된다!)

 

 

 

SwitchTest4.class

package chapter04.condition;

public class SwitchTest4 {

	public static void main(String[] args) {
		int score = 82;
		
		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;
		default:
			System.out.println("F");
			break;
		}

	}

}

 

 

 

 

SwitchTest5.class

package chapter04.condition;

public class SwitchTest5 {

	public static void main(String[] args) {
		// switch 표현식
		int ranking = 1;
		
		String medal = switch (ranking) {
		                   case 1 -> {
		                	   System.out.println("축하축하");
		                	   yield "금메달"; // yield: "return"의 역할을 수행하며, 값을 반환함!!
		                   }
		                   case 2 -> "은메달";
		                   case 3 -> "동메달";
		                   default -> "참가상";
		                };
	    System.out.println(medal + "을 수여합니다.");

	}

}

 

 

 

 

 

2) 반복문 : 같은 문장을 반복하여 사용할 경우 반복 조건, 반복 횟수의 제어를 통해 반복 처리

  • while 문
  • do-while 문
  • for 문
  • 예약어 break, continue – 반복문을 제어

 

(1) while 문 : 조건식을 만족한다면 while 문 안의 수행문들을 순차적으로 반복 실행

while (조건식) {
    수행문 1;
    ...
    수행문 2;
    ...
}

 

 

(2) do-while

do {              --> 조건식을 비교하기 전이지만 do문 안의 수행문들을 일단 실행
    수행문 1;
    ...
    수행문 2;
    ...
} while (조건식)   --> 조건식을 만족한다면 do문 안의 수행문들을 순차적으로 반복 실행

 

 

(3) for 문

for (초기화; 조건식; 증감식) {
    수행문 1;
    수행문 2;
    ...
}

// 초기화 : for 문 안에서 사용할 제어변수를 초기화
// 조건식 : 반복문 안의 수행문을 실행할지 정하는 조건 판별
// 증감식 : 제어변수를 사용할 경우, 변화를 주는 증감식

 

 

 

 

2-1) for 문

ForTest1.class

package chapter05.loop;

public class ForTest1 {

	public static void main(String[] args) {
		int a = 100;
		
		// for (초기화식; 조건식; 증감식) {}
		for (int i = 1; i <= 5; i++) {
			System.out.println(a);
			System.out.println(i + "번 학생 성적 처리");
		}

	}

}

 

 

 

 

ForTest2.class

package chapter05.loop;

public class ForTest2 {

	public static void main(String[] args) {
		for (int i = 0, j = 1; i < 5; i++, j += 2) {
			System.out.println("i=" + i + ", j=" + j);
		}
		
		/*
		// 무한 루프 식
		for ( ; ; ) {
			System.out.println("무한 루프");
		}
		*/

	}

}

 

 

 

 

ForTest3.class

package chapter05.loop;

public class ForTest3 {

	public static void main(String[] args) {
		int sum = 0;
		int sum2 = 0;
		
		for (int i = 0; i <= 100; i++) {
			sum += i; // sum = sum + i;
		}
		System.out.println("합계: " + sum);
		
		// 짝수만의 총합 구하는 식
		for (int i = 0; i <= 100; i += 2) {
			sum2 += i; // sum2 = sum2 + i;
		}
		System.out.println("합계: " + sum2);
		
		// 합계 시점 구하는 식
		int sum3 = 0;
		int j;
		for (j = 0; j < 100; j++) {
			sum3 += j;
			if (sum3 > 100) break;
		}
		System.out.println("합계가 100이 넘는 시점은 " + j + "입니다.");

	}

}

 

 

 

 

 

3) eclipse 실습 코드

패키지 chapter04.condition

1) Switch_Example01.class

package chapter04.condition;

import java.util.Scanner;

public class Switch_Example01 {

	public static void main(String[] args) {
		/*
		출생연도를 입력받아 띠를 출력한다.
		띠는 12개이며, 연도를 12로 나누었을 때의 나머지값에 따라 아래와 같이 구분된다.
		    원숭이 0
		    닭    1
		    개    2
		    돼지   3
		    쥐    4
		    소    5
		    호랑이 6
		    토끼   7
		    용    8
		    뱀    9
		    말    10
		    양    11
		    
	    출력결과 :
	             연도를 입력하세요: 2001
	             2001년생은 뱀띠입니다.
		*/
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("연도를 입력하세요: ");
		int year = scan.nextInt();
		String animal = "";
		
		switch (year % 12) {
		case 0:
			animal = "원숭이";
			break;
		case 1:
			animal = "닭";
			break;
		case 2:
			animal = "개";
			break;
		case 3:
			animal = "돼지";
			break;
		case 4:
			animal = "쥐";
			break;
		case 5:
			animal = "소";
			break;
		case 6:
			animal = "호랑이";
			break;
		case 7:
			animal = "토끼";
			break;
		case 8:
			animal = "용";
			break;
		case 9:
			animal = "뱀";
			break;
		case 10:
			animal = "말";
			break;
		case 11:
			animal = "양";
			break;
		}
		System.out.println(year + "년생은 " + animal + "띠입니다.");

	}

}

 

 

 

 

2) Switch_Example02.class

package chapter04.condition;

import java.util.Scanner;

public class Switch_Example02 {

	public static void main(String[] args) {
		/*
		계산기
		정수 2개와 연산자(+, -, *, /)를 입력받아 결과를 출력한다.
		단, 분모가 0일 경우 "0으로 나눌 수 없습니다"를 출력한다.
		
		출력 결과 : 
		          연산자 (+, -, *, /): /
		          정수1 입력: 3
		          정수2 입력: 0
		          0으로 나눌 수 없습니다.
		*/
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("연산자(+, -, *, /): ");
		String calculate = scan.next();
		System.out.print("정수1 입력: ");
		int num1 = scan.nextInt();
		System.out.print("정수2 입력: ");
		int num2 = scan.nextInt();
		
		// 내 version
		switch (num2) {
		case 0:
			System.out.println("0으로 나눌 수 없습니다.");
			break;
		default:
			switch (calculate) {
			case "+":
				System.out.println(num1 + num2);
				break;
			case "-":
				System.out.println(num1 - num2);
				break;
			case "*":
				System.out.println(num1 * num2);
				break;
			case "/":
				System.out.println(num1 / num2);
				break;
			}
			break;
		}
		
		// 교수님 version
		switch (calculate) {
		case "+":
			System.out.println(num1 + num2);
			break;
		case "-":
			System.out.println(num1 - num2);
			break;
		case "*":
			System.out.println(num1 * num2);
			break;
		case "/":
			if (num2 == 0) {
				System.out.println("0으로 나눌 수 없습니다.");
				System.exit(0);
			}
			System.out.println(num1 / num2);
			break;
		default:
			System.out.println("잘못 입력했습니다.");
			break;
		}

	}

}

 

 

 

 

패키지 chapter05.loop

1) Loop_Example01.class

package chapter05.loop;

public class Loop_Example01 {

	public static void main(String[] args) {
		/*
		출력 결과 :
		          0 1 2 3 4 5 6 7 8 9
		          1 2 3 4 5 6 7 8 9 10
		          1 3 5 7 9
		          0 2 4 6 8 10
		          10 20 30 40 50 60 70 80 90 100
		          5 4 3 2 1
		          10000 1000 100 10 1
		*/
		
		// 0 1 2 3 4 5 6 7 8 9
		for (int i = 0; i < 10; i++) {
			System.out.print(i + " ");
		}
		System.out.println();
		
		// 1 2 3 4 5 6 7 8 9 10
		for (int i = 1; i <= 10; i++) {
			System.out.print(i + " ");
		}
		System.out.println();
		
		// 1 3 5 7 9
		for (int i = 1; i < 10; i += 2) {
			System.out.print(i + " ");
		}
		System.out.println();
		
		// 0 2 4 6 8 10
		for (int i = 0; i <= 10; i += 2) {
			System.out.print(i + " ");
		}
		System.out.println();
		
		// 10 20 30 40 50 60 70 80 90 100
		for (int i = 10; i <= 100; i += 10) {
			System.out.print(i + " ");
		}
		System.out.println();
		
		// 5 4 3 2 1
		for (int i = 5; i > 0; i--) {
			System.out.print(i + " ");
		}
		System.out.println();
		
		// 10000 1000 100 10 1
		for (int i = 10000; i > 0; i /= 10) {
			System.out.print(i + " ");
		}
		System.out.println();

	}

}