Java/패스트캠퍼스

패스트캠퍼스 자바 프로그래밍

hs_developer 2022. 3. 17. 21:57

조건문 -if문

 

public class IfElseTest {

	public static void main(String[] args) {
		
		int age = 6;
		
		if (age >= 8) {
			System.out.println("학교에 다닙니다.");
		}
		else {
			System.out.println("학교에 다니지 않습니다.");
		}

		System.out.println("노는 게 젤 좋아.");
	}

}

 

// int = 6 

학교에 다니지 않습니다.
노는 게 젤 좋아.

 

// int = 8 

학교에 다닙니다.
노는 게 젤 좋아.

 

 

 


 

 

조건이 여러 개일 때의 if문

 

 

public class IfElseIfElseTest {

	public static void main(String[] args) {
		
		int age = 12;
		int charge;
		
		if(age < 8) {
			charge = 1000;
			System.out.println("미취학 아동입니다.");
		}
		
		else if(age < 14) {
			charge = 2500;
			System.out.println("초등학생입니다.");
		}
		
		else if(age < 20) {
			charge = 2500;
			System.out.println("중, 고등학생입니다.");
		}
		
		else {
			charge = 3000;
			System.out.println("일반인입니다.");
		}

		System.out.println("입장료는" + charge + "원입니다.");
	}
}

 

// 결과 값

초등학생입니다.
입장료는2500원입니다.

 

 


 

조건이 여러 개일 때 간단히 표현되는 swich-case문

 

 

if -else if -else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 있게 구현

비교 조건이 특정 값이나 문자열인 경우 사용

break 문으로 각 조건이 만족되면 switch 블럭을 빠져나오도록 함

자바 14부터 break 없이 더 간결하게 표현 됨

 

 

public class SwitchCaseTest {

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

 

// 결과 값

10월은 31일입니다.

 

 


 

 

문자열 지원되는 switch -case문

 

 

public class SwitchCaseTest2 {

	public static void main(String[] args) {
		
		String medal = "Gold";
		
		switch(medal) {
		
		case "Gold":
			System.out.println("금메달입니다.");
			break;
		case "Silver":
			System.out.println("은메달입니다.");
			break;
		case "Bronze":
			System.out.println("동메달입니다.");
			break;
		default:
			System.out.println("메달이 없습니다.");
			break;
		}
	}
}

 

 

// 결과 값

금메달입니다.

 

 


 

Java 14부터 지원되는 Switch Expression

 

 

간단하게 쉼표(,)로 구분

식으로 표현하여 반환 값을 받을 수 있다. return 값이 없는 경우 오류 생긴다.

yield 키워드 사용한다.

 

 

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 + "일입니다.");
	}
}

 

// 결과 값

한 달은 31일입니다.
3월은 31일입니다.

 

 

이건.. 딱히 필요 없을 듯

 

if 문만 잘 쓰자

 

 


 

반복문 -while 문

 

 

조건은 주로 반복 횟수나 값의 비교 결과에 따라 true, false 판단 됨

ex) 달리는 자동차, 일정 횟수만큼 돌아가는 나사 못, 특정 온도까지 가동되는 에어컨

 

 

 

while문 예제

 

 

 

1부터 10까지 더하는 식 구현

 

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);
		System.out.println(num);
	}
}

 

// 결과 값

55
11 // 11이 되면 num을 빠져 나옴

 

 


 

반복문 -do -while문

 

 

조건과 상관 없이 한 번은 수행문 수행

 

 

while문은 조건을 먼저 체크하고 반복 수행이 된다면, do-while은 조건과 상관 없이 수행을 한 번 하고 나서 조건을 체크한다.

 

조건이 맞지 않으면 (true가 아니면) 더 이상 수행하지 않는다.

 

 

import java.util.Scanner;

public class DowhileTest {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		// Scanner: 정수, 실수, 문자열 읽어오는 클래스
		// System.in: 입력한 값을 바이트 단위로 읽는 것 

		int input; 
		int sum = 0;

		do {
			input = scanner.nextInt();
			// nextInt: int 입력받는 메소드

			sum += input;
			
		}while(input != 0);

			
		System.out.println(sum);
	}

}

 

// 결과 값

1
2
3
4
0 // 0이 입력되면 멈춤
10

 

 


 

반복문 - for문

 

 

1부터 10까지 더한 결과 출력

증감식

 

// for문

public class ForTest {

	public static void main(String[] args) {
	
		int count =1;
		int sum = 0;
		
		for( int i = 0 ; i<10; i++, count++) {  //10번
			sum += count;
			//count++;
		}
		System.out.println(sum);


	}
}

 

 

// while문

public class WhileTest {

	public static void main(String[] args) {
	
		int num = 1;
		int total = 0;
		
		while( num <= 10) {
			total += num;
			num++;
		}
		System.out.println(total);
	}
}

 

// 결과 값

55

 

 


 

 

반복문이 여러 번 포개진 중첩 반복문

 

 

반복문 내부에 또 다른 반복문이 있음

 

 

 

구구단을 for와 while로 구현하자.

 

// for문

public class NestedLoopTest {

	public static void main(String[] args) {
		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(); // 단마다 띄어쓰기
		}
	}
}

 

public class NestedLoopTest {

	public static void main(String[] args) {
		int dan = 2;
		while( dan <= 9 ) {
			int count = 1;
			while (count <= 9) {
				
				System.out.println( dan + "X" + count + "=" + dan * count);
				count++;
				
			}
			dan++;
			System.out.println();
		}
	}
}

 

 

// 결과 값

2X1=2
2X2=4
2X3=6
2X4=8
2X5=10
2X6=12
2X7=14
2X8=16
2X9=18

.
.

9X1=9
9X2=18
9X3=27
9X4=36
9X5=45
9X6=54
9X7=63
9X8=72
9X9=81

 

 

for문이 더 쓰기 쉬운 듯

 

 

 


 

 

중간에 멈추는 break문, 무시하고 계속 진행하는 continue문

 

 

break문 예제

 

1부터 숫자를 더해 100이 넘는 순간의 그 숫자와 합을 출력하자.

 

 

public class BreakTest {

	public static void main(String[] args) {

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

 

// 결과 값

105
14

 

 

 

continue문 예제

 

1부터 100까지의 숫자 중 3의 배수 출력하자.

 

 

public class ContinueTest {

	public static void main(String[] args) {

		int num;
		for(num=1; num<=100; num++) {
			
			if((num%3) != 0) continue; // 3의 배수가 아닌 것들 다 무시
			
			System.out.println(num);
		}
	}
}

 

 

// 결과 값

3
6
9
.
.
93
96
99