chapter 4 조건문과 반복문

JMG·2022년 1월 10일
0

자바의 정석

목록 보기
7/13

📌 조건문(if, switch)

조건을 만족할때만 {}를 1번 수행합니다. (0~1번)

📌 반복문(for, while)

조건을 만족하는 동안 {}를 n번 수행합니다.(0~n번)

📖 if문

조건식이 참(true)일 때, 괄호{ }안의 문장들을 수행한다.

if(조건식) {
	//조건식이 참일 때 수행
}

조건식의 다양한 예)

//정수 x가 90이상 100이하일때
90 <= x && x <= 100

//문자 c가 공백이거나 탭 또는 개행 문자일때
c == ' ' || c == '\t' || c== '\n' 

//문자열 str의 내용이 "yes"일때(대소문자 구분)
str.equals("yes")

//문자열 str의 내용이 "yes"일때(대소문자 구분안함)
str.equalsIgnoreCase("yes")

📌 블럭 { } 이란?

여러 문장을 하나로 묶어주는 것입니다.

if(score > 60) { //블럭의 시작
	//탭(tab)에 의한 들여쓰기 추천	
} //블럭의 끝

📖 if-else문

둘 중의 하나의 조건식이 참일 때와 거짓일 때로 나눠서 처리합니다.

if(조건식) {
	//조건식이 참일 때 수행
} else {
	//조건식이 거짓일 때 수행
}

📖 if-else if문

여러개의 조건식 중 한가지만 수행되는 if조건식입니다.

if(조건식1) {
	//조건식1이 참일 때 수행
} else if(조건식2) {
	//조건식2가 참일 때 수행
} else if(조건식3) {
	//조건식3이 참일 때 수행
} else {
	//위 어느 조건식도 참이 아닐 때 수행
}

예제)

import java.util.Scanner;

class Ex4_4 {
	public static void main(String [] args) {
		
		int score = 0; //점수를 저장하기 위한 변수
		char grade = ' '; //학점을 저장하기 위한 변수
		
		System.out.println("점수를 입력하세요>");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt(); //입력받은 점수를 변수 score에 저장

		if(score >= 90) {
			grade = 'A';
		} else if(score >= 80) {
			grade = 'B';
		} else if(score >= 70) {
			grade = 'C';
		} else {
			grade = 'D';
		}

		System.out.println("당신의 학점은 "+grade+"입니다.");
	}
}

📖 중첩 if문 - if문 안의 if문

if (조건식1) {
	if (조건식2) {
		//조건식1과 조건식2가 모두 true일 때 수행	
	} else {
		//조건식1은 true이고 조건식2가 false일 때 수행
	}
} else {
	//조건식1이 false일 때 수행
}

📖 switch문

처리해야 하는 경우의 수가 많을 때 유용한 조건문입니다.

switch(조건식) { //switch문의 조건식 결과값은 true, false가 아니다.

	case1 :
		//조건식의 결과가 값1과 같을 때 수행
		break;
	case2 :
		//조건식의 결과가 값2과 같을 때 수행
		break;
	//...
	default :
		//조건식과 일치하는 case문이 없을 때 수행

}

📌 switch문은 if문으로 바꿀 수 있으나 if문은 switch문으로 바꿀 수 없는 경우도 있습니다.

📌 switch문의 제약조건

  • switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
  • case문의 값은 정수, 상수(문자포함), 문자열만 가능하며, 중복되지 않아야 한다.(변수불가)

예제)

import java.util.Scanner;

public class Ex4_6 {
	public static void main(String [] arge) {

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

		Scanner scanner = new Scanner(System.in);
		int month = scanner.nextInt();
		String season = "";

		switch(month) {
			
			case 3:
			case 4:
			case 5:
				season = "봄";
				break;
			case 6: case 7: case 8:
				season = "여름";
				break;
			case 9: case 10: case 11:
				season = "가을";
				break;
			default :
				season = "겨울";

		}

		System.out.printf("현재의 계절은 %s입니다.", season);

	}
}

📖 임의의 정수 만들기

Math.random() 0.0과 1.0사이의 임의의 double값을 반환합니다.
예제)

for(int i=0; i<=10; i++) {
	//-5부터 5사이의 난수
	System.out.println((int)(Math.random() * 11) -5);
}

📖 for문

조건을 만족하는 동안 블럭{ }을 반복합니다.
반복횟수를 알 때 적합합니다.

for(초기화; 조건식; 증감식) {
	//식
}

예제)

for(int i=1, j=10; i<=10; i++, j++) {
	System.out.println("i="+i+", j="+j);
}

📖 중첩 for문

for문 내에 또 다른 for문을 포함시킬 수 있습니다.

예제)

//구구단
for(int i=2; i<=9; i++) {
	for(int j=1; j<=9; j++) {
		System.out.println(i+"*"+j+"="+(i*j));
	}
	System.out.println();
}

📖 while문

조건을 만족시키는 동안 블럭 {}을 반복 - 반복횟수를 모를때 유용합니다.

while (조건식) {
	//조건식의 연산결과가 참인 동안, 반복될 문장을 적는다.
}

📖 do-while문

블럭{ }을 최소한 한 번 이상 반복 - 사용자 입력반을 때 유용합니다.

do {
	//조건식의 연산결과가 참인 동안, 반복될 문장을 적는다.
} while (조건식);	//끝에 ;을 잊지 않도록 주의

예제)

import java.util.Scanner;

public class DoWhile {
	public static void main(String [] args) {

		int rnum = 0;
		int input = 0;

		Scanner scanner = new Scanner(System.in);

		rnum = (int)(Math.random() * 100 +1);

		do {
			
			System.out.printf("숫자를 입력하세요. : ");
			input = scanner.nextInt();

			if(rnum>input) {
				System.out.println("입력하신 수는 정답보다 작습니다.");
			} else if(rnum<input) {
				System.out.println("입력하신 수는 정답보다 큽니다.");
			}
			

		} while(rnum != input);

		System.out.println("정답입니다.");


	}
}

📖 break문

자신이 포함된 하나의 반복문을 벗어날때 사용합니다.

예제)

//sum이 100이 넘어가면 종료되는 반복문
int sum = 0;
int i = 0;

whlie(true) {
	if(sum > 100) {
		break;
	}
	++i;
	sum += i;
}

System.out.println("i="+i);
System.out.println("sum="+sum);

📖 continue문

자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감

예제)

//i가 2의 배수인경우 출력하지 않는 반복문
for(int i=0; i<=10; i++) {
	if(i%2==0) {
		continue;
	}	
	System.out.println(i);
}

📖 이름붙은 반복문

반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
중첩반복문과 같은 상황에서 유용하게 쓰인다.

예제)

//2단의 5까지만 출력되는 구구단
Loop1 : for(int i=2; i<=9; i++) {
		for(int j=1; j<=0; j++) {
			if(j==5)
				//Loop1이 없다면 안쪽for문만 종료된다.
				break Loop1;
			System.out.println(i+"*"+j+"="+(i*j));
		
		}
		System.out.println();
}
profile
초보개발 블로그입니다~

0개의 댓글