JAVA/조건문과 반복문

조건문과 반복문_1

whale_it 2018. 8. 14. 11:53



chap 04 조건문과 반복문

  • 제어문 : 프로그램의 흐름(flow)을 바꾸는 역할
  • 조건문 : 조건에 따라 문장이 수행
  • 반복문 : 특정 문장을 반복 수행

1. 조건문 - if swhich

1.1 if 문

if(조건식) {
    // 조건식이 참이면 실행
}

조건식 : 반드시 true 이거나 falas

조건식조건식이 참일 조건
90 <= x && x <= 100정수 x 가 90이상 100이하 일때
x < 0 \|\| x > 100정수 x 가 0보다 작거나 100보다 클 때
x % 3 == 0 || x %2 != 0정수 x 가 3의 배수지만, 2의 배소는 아닐 때
package ch04;
class FlowEx01 {
	public static void main(String[] args) { 
		int x= 0;

		System.out.printf("x=%d 일때, 참인 것은%n", x);

		if(x==0) System.out.println("x==0"); // 실행 문장이 한줄이면 {} 블럭 생략 가능
		if(x!=0) System.out.println("x!=0");
		if(!(x==0)) System.out.println("!(x==0)");
		if(!(x!=0)) System.out.println("!(x!=0)");
		System.out.println();

		x = 1;
		System.out.printf("x=%d 일때, 참인 것은%n", x);

		if(x==0) System.out.println("x==0");
		if(x!=0) System.out.println("x!=0");
		if(!(x==0)) System.out.println("!(x==0)");
		if(!(x!=0)) System.out.println("!(x!=0)");
	}
}


 




package ch04;
import java.util.*; // Scanner클래스를 사용하기 위해 추가

class FlowEx02 {
	public static void main(String[] args) {  
		int input;

		System.out.print("숫자를 하나 입력하세요.>");

		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
		input = Integer.parseInt(tmp);   // 입력받은 문자열(tmp)을 숫자로 변환

		if(input==0) {
			System.out.println("입력하신 숫자는 0입니다.");	
		}

		if(input!=0)
			System.out.println("입력하신 숫자는 0이 아닙니다.");		
			System.out.println("입력하신 숫자는 "+ input +"입니다.");
	} // main의 끝
}


 


 

1.2 if - else 문

if(조건식){
    // 조건이 참 일때 수행
}else{
    // 조건식이 거짓 일때 수행
}
package ch04;
import java.util.*; // Scanner클래스를 사용하기 위해 추가

class FlowEx03 {
	public static void main(String[] args) {  
		int input;

		System.out.print("숫자를 하나 입력하세요.>");

		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
		input = Integer.parseInt(tmp);   // 입력받은 문자열(tmp)을 숫자로 변환

		if(input==0) {
			System.out.println("입력하신 숫자는 0입니다.");	
		} else { // input!=0인 경우
			System.out.println("입력하신 숫자는 0이 아닙니다.");
		}
	} // main의 끝
}


 


1.3 if-else- if 문

if(조건식1){
    // 조건식1이 참 일때 수행
}else if(조건식2){
    // 조건식2이 참 일때 수행
}else if(조건식3){
    // 조건식3이 참 일때 수행
}else if(조건식4){
    // 조건식4이 참 일때 수행
}else {
    어느 조건식도 만족하지 않을 때
}
package ch04;
import java.util.*;

class FlowEx04 {
	public static void main(String[] args) { 
		int score  = 0;   // 점수를 저장하기 위한 변수
		char grade =' ';  // 학점을 저장하기 위한 변수. 공백으로 초기화한다.

		System.out.print("점수를 입력하세요.>");
		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
		score = Integer.parseInt(tmp);   // 입력받은 문자열(tmp)을 숫자로 변환

		if (score >= 90) {         // score가 90점 보다 같거나 크면 A학점
			 grade = 'A';             
		} else if (score >=80) {   // score가 80점 보다 같거나 크면 B학점 
			 grade = 'B'; 
		} else if (score >=70) {   // score가 70점 보다 같거나 크면 C학점 
			 grade = 'C'; 
		} else {                   // 나머지는 D학점
			 grade = 'D'; 
		}
            
		System.out.println("당신의 학점은 "+ grade +"입니다."); 
	}
}

 


1.4 중첩 if 문

if(조건식1){
    if(조건식2){
        // 조건식1이 참이고 조건식 2가 참인경우
    }else{
        // 조건식1만 참인 경우
    }
}else{
    조건식 1이 거짓인 경우
}
package ch04;
import java.util.*;

class FlowEx05 {
	public static void main(String[] args) { 
		int  score = 0;
		char grade = ' ';
		char opt   = '0';

		System.out.print("점수를 입력해주세요.>");

		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
		score = Integer.parseInt(tmp);   // 입력받은 문자열(tmp)을 숫자로 변환
		
		System.out.printf("당신의 점수는 %d입니다.", score);

		if (score >= 90) {		      // score가 90점 보다 같거나 크면 A학점(grade)
			grade = 'A';
			if (score >= 98) { 	      // 90점 이상 중에서도 98점 이상은 A+
				opt = '+';	
			} else if (score < 94) {  // 90점 이상 94점 미만은 A-
				opt = '-';
			}
		} else if (score >= 80){	  // score가 80점 보다 같거나 크면 B학점(grade)
			grade = 'B';
			if (score >= 88) {
				opt = '+';
			} else if (score < 84)	{
				opt = '-';
			}
		} else {				      // 나머지는 C학점(grade)
			grade = 'C';
		}
			
		System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
	}
}

 


1.5 switch 문

  • 단 하나의 조건식으로 많은 경우의 수 처리
  • 표현이 간결 하나 제약 조건이 있음
  • 조건식 계산 -> 조건식 결과와 일치하는 case 문으로 이동 -> 문장 수행 -> break 문에서 끝남

제약 조건

  • 조건식 결과는 정수, 문자 또는 문자열(JDK1.7에 추가됨) 이어야 함
package ch04;
import java.util.*;

class FlowEx06 {
	public static void main(String[] args) { 
		int month = 0;

		System.out.print("현재 월을 입력하세요.>");

		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
		month = Integer.parseInt(tmp);   // 입력받은 문자열(tmp)을 숫자로 변환

		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;
			default:
	//		case 12:	case 1: case 2:
				System.out.println("현재의 계절은 겨울입니다.");
		}
	} // main의 끝
}