Ch01. JAVA기초 03

하파타카·2022년 8월 16일
0

패캠JAVA, Spring과정

목록 보기
4/20

14.조건문-if문

특정한 조건에 따라 실행시키는 문법.

사용

if(조건식) {
	수행문;	// 조건식이 true인 경우 실행
} else {
	수행문2;	// 조건식이 false인 경우 실행
}

else는 사용하지 않아도 무관.
들여쓰기에 주의.
수행문이 한 행일 경우 중괄호{} 생략가능.

예제

public class IfElseTest {
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		int age = scanner.nextInt();
		
		if(age >= 8) {
			System.out.println("학교에 다닙니다.");
		} else {
			System.out.println("학교에 다니지 않습니다.");
		}
		System.out.println("노는게 제일 좋아");
	}
}


15.조건문-조건이 여러개일때 if문

if-else if-else문을 이용해 하나의 상황이 여러가지 조건일 때에 따라 각각의 수행이 가능함.
중간에 하나의 조건이라도 맞으면 해당 조건에 대한 수행문이 실행됨.
else절을 이용해 모든 조건에 해당되지 않을 경우의 수행문을 지정할 수 있음.
=> else절을 지정하지 않으면 기본값이 없어 에러가 발생할 수 있음.

사용

if(조건식1) {
	수행문;	// 조건식1이 true인 경우 실행
} else if(조건식2) {
	수행문2;	// 조건식2가 true인 경우 실행
} else if(조건식3) {
	수행문2;	// 조건식2가 true인 경우 실행
} else {
	수행문 4;	// 위의 모든 조건이 false인 경우 실행
}

if-else if문을 사용하지 않고 if문을 따로 사용할 경우 서로 배타적인 조건비교로직이 성립되지 않고 모든 조건절이 따로 수행됨.
아래의 두 예제를 참고.

예제

if-else if문을 사용할 경우

public class IfElseIfTest {
	public static void main(String[] args) {
		
		int age = 12;
		int charge;
		
		if (age < 8) {
			charge = 1000;
			System.out.println("미취학 아동입니다.");
		} else if (age < 14) {
			charge = 1500;
			System.out.println("초등학생 입니다.");
		} else if (age < 20) {
			charge = 2500;
			System.out.println("청소년 입니다.");
		} else  {
			charge = 3500;
			System.out.println("성인 입니다.");
		}
		System.out.println("입장료는 " + charge + "원 입니다.");
	}
}

단순 if문을 사용할 경우

public class IfElseIfTest {
	public static void main(String[] args) {
		
		int age = 12;
		int charge;
		
		if (age < 8) {
			charge = 1000;
			System.out.println("미취학 아동입니다.");
		} 
		if (age < 14) {
			charge = 1500;
			System.out.println("초등학생 입니다.");
		} 
		if (age < 20) {
			charge = 2500;
			System.out.println("청소년 입니다.");
		} else  {
			charge = 3500;
			System.out.println("성인 입니다.");
		}
		System.out.println("입장료는 " + charge + "원 입니다.");
	}
}


16.조건문-switch case문

여러개의 조건일때 if-else문보다 조건문을 간결하게 표현할 수 있음.
단일한 문자열이나 특정 값으로 조건이 표현될 경우 사용가능.
default는 위의 모든 값에 해당하지 않을 경우 실행되는 구문.(else와 유사)
반드시 break문을 사용하여 해당 실행문을 멈춰줘야 함. 미사용 시 아래의 실행문까지 계속 실행됨.

case문 안에서는 중괄호{}를 사용하지 않음.
문장이 많더라도 세미콜론;을 사용하여 계속 기술.
같은 실행문이 실행되어야 할 경우 case문을 연달아 기술해도 무관.(아래 예시참고.)

참고 import 단축키 ctrl + shift + o

예시

public class SwitchCaseTest {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		int month = scanner.nextInt();
		int day;
		
		switch (month) {
		case 1: case 3: case 5: case 7: case 8: case 10: case 12: 
			day = 31;
			break;
		case 2:
			day = 28;
			break;
		case 4: case 6: case 9: case 11: 
			day = 30;
			break;
		default:
			System.out.println("존재하지 않는 월입니다.");
			day = -1;
			break;
		}
		System.out.println(month + "월은 " + day + "일 입니다.");
		
	}
}

JAVA14버전에서 사용할 수 있는 Switch Expression

public class SwitchCaseUpTest {

	public static void main(String[] args) {
		
		int month = 3;
		
		int day = switch (month) {
	    	case 1, 3, 5, 7, 8, 10,12 -> {
	    		System.out.println("한 달은 31일입니다."); 
	    		yield 31;
	    	}
	    	case 4,6,9,11 -> {
	    		System.out.println("한 달은 30일입니다."); 
	    		yield 30;
	    	}
	    	case 2 ->{
	    		System.out.println("한 달은 28일입니다.");
	    		yield 28;
	    	}
	    	default->{
	    		System.out.println("존재하지 않는 달 입니다."); 
	    		yield 0;
	    	}
		};
		System.out.println(month + "월은 " + day + "일입니다.");
	}
}

break문을 사용하지 않으며, 값을 반환받을 수 있다는 점이 특징.
yield키워드를 사용하여 값을 반환한다.
switch문이 완전히 종료되는 부분에 세미콜론;이 필요.

*현재 내가 사용중인 java버전은 11이라 직접 실행시켜보지는 않았음.


17.반복문-while문

조건이 참(true)인 동안 계속 반복수행.
조건이 false가 되는 순간 반복문을 탈출함.

사용

while(조건식) {
	수행문;	// 조건이 true인 동안 반복수행
}

조건식은 하나의 변수일 수도 있다.
수행문이 한 행일 경우 중괄호{} 생략가능.

예제

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

		int num = 1;
		int sum = 0;;
		
		while(num <= 10) {
			sum += num;		// 지역변수의 경우 자동으로 초기화되지 않으므로 반드시 초기화가 필요.
			num++;
		}
		System.out.println("sum= " + sum + ", num= " + num);
	}
}

주의! 지역변수는 자동초기화가 적용되지 않으므로 반드시 초기화과정을 거쳐야 함


18.반복문-do while문

조건을 체크하기 전 수행문을 맨 처음 한 번 먼저 실행한 후 다시 조건을 체크하여 수행.

무조건 한 번 실행이 필요할 경우 사용됨.

사용

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

예제

1.일반 while문 사용

Scanner scanner = new Scanner(System.in);
int input;
int sum = 0;

input = scanner.nextInt();

while (input != 0) {
	sum += input;
	input = scanner.nextInt();	
}
System.out.println(sum);

2.do while문 사용

Scanner scanner = new Scanner(System.in);
int input;
int sum = 0;

do {
	input = scanner.nextInt();
	sum += input;
} while (input != 0);

System.out.println(sum);

위의 1, 2번의 경우 do while을 사용한 2번이 조금 더 보기 좋음.


19.반복문-for문

가장 사용빈도가 높은 반복문.
각 문장은 독립된 문장이므로 세미콜론; 빼먹지 않도록 주의.
while문보다 가독성면에서 유리함.
배열과 같이 사용하기 좋음.

사용

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

수행순서: 초기화식 > 조건식 > 수행문 > 증감식
단, 초기화는 최초 1번만 수행함.
보통 0에서 시작해 n미만의 조건으로 생성함.
(=>1부터 n이하까지 같은 조건도 사용가능하나 통상적으로 잘 사용하지 않음.)

예시

public class ForTest {
	public static void main(String[] args) {
		
		// for문을 사용했을 때
		int count = 1;
		int sum = 0;
		
		for (int i = 0; i < 10; i++, count++) {
			sum += count;
		}
		System.out.println("sum = " + sum);
		
		// while문을 사용했을 때
		int num = 1;
		int total = 0;
		
		while (num <= 10) {
			total += num;
			num++;
		}
		System.out.println("total = " + total);
	}
}

참고
참고로 i++는 i의 값이 변화하는 식.
i+1은 대입연산자를 통해 다시 i에 대입을 해야 i의 값이 변화함.


20.중첩반복문

반복문이 중첩될 수록 수행속도가 느려지니 주의.

public class NestedLoopTest {
	public static void main(String[] args) {
		
		// for문을 이용한 구구단
		int dan = 2;
		int count = 1;
		
		for( dan = 2; dan <= 9; dan++) {
			
			for(count = 1; count <=9; count++) {
				
				System.out.println( dan + "X" + count + "=" + dan * count);
			}
			System.out.println();
		}

		// while문을 이용한 구구단
		dan = 2;
		while( dan <= 9 ) {
			count = 1;
			while (count <= 9) {
				
				System.out.println( dan + "X" + count + "=" + dan * count);
				count++;
				
			}
			dan++;
			System.out.println();
		}
	}
}


출력은 ixj=n 의 형태인 2~9단의 구구단이므로 나머지 생략

while문을 이용할 경우 초기화를 직접 해줘야한다는 점에 유의한다.


21.Break문과 Countinue문

Break문

감싸고 있는 가장 가까운 제어문 하나의 블럭을 탈출함.

예제

// 1부터 숫자를 더하여 100이 넘는 순간의 그 숫자와 합을 출력하시오
public class BreakTest {
	public static void main(String[] args) {

		int sum = 0;
		int num;
		
		for (num = 1; ; num++) {
			sum += num;
			if (sum >= 100)
				break;
		}
		
		System.out.println("sum = " + sum);
		System.out.println("num = " + num);
	}
}

Countinue

특정한 조건에 해당할 경우 다음 반복으로 넘어감.

예제

// 1부터 100까지 숫자 중 3의 배수를 출력하시오
public class CountinueTest {
	public static void main(String[] args) {

		int num;
		for( num = 1; num <= 100; num++) {
			
			if( (num % 3) != 0) continue; 
			
			System.out.println(num);
			
		}
	}
}

profile
천 리 길도 가나다라부터

0개의 댓글