본문 바로가기

Java 기본 개념

자바를 잡아라 제 4장 - 세상사 쉬운 건 없다

728x90

[ 2022년 9월 23일 금요일]

 

 

 

제어문 (2)
: 복잡한 세상 속 반복적인 삶

 

  • 조건문 switch ~ case

      : 다중 분기 문제를 해결할 때는 switch문을 사용


     [ switch ~ case 특징 ]


      if문과는 달리 조건식이 사용되지 X

      값을 가지는 변수 또는 표현식이 판단조건으로 사용

      연산 결과의 데이터 타입은 int, String, Enum(열거형)이 사용

      case문 뒤에 사용되는 값은 변수를 사용할 수 없고, 반드시 상수를 사용

      switch ~ case문에서 default는 if~else에서 else와 비슷한 효과



  [ switch ~ case 's example - (1) ]
    : 판단 조건으로 이 들어간 경우

public class SwitchEx {
	public static void main(String[] args) {
		
		int a =0;
		
		//swtich 구문의 ()예는 값이나 값에 대한 연산식이 들어갈 수 있음
		switch (a) {
		case -1:
		case 0:
		case 1:
			System.out.println("1입니다");
			break;
		case 2:
			System.out.println("2입니다");
			break;
		case 3:
			System.out.println("3입니다");
			break;
		case 4:
			System.out.println("4입니다");
			break;

		default:
			System.out.println("1~4가 아닙니다~");
			break;
		}
	}
}



  [ switch ~ case 's example - (2) ]
   : 판단 조건으로 연산식의 값이 들어간 경우

import java.util.Scanner;

public class SwitchEx02 {
	
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		int score = scan.nextInt();
		
		int result = (score/10);
		switch (result) {
		case 9:
			if(score >=95) {
				System.out.println("A+");
			}else {
				System.out.println("A");
			}
			break;
		case 8:
			System.out.println("B");
			break;
		case 7:
			System.out.println("C");
			break;
		case 6:
			System.out.println("D");
			break;
			
		default:
			System.out.println("F");
			break;
		}
	}
}

 

 

 

  • 반복문 while

 

        초기값;

         while ( 조건식 ) {

            증감식; }



      조건식을 검사해서 조건식이 참이면 실행문을 반복
      거짓이면 while문을 빠져나옴

       while문에 들어가는 조건식 반드시 boolean타입으로 결과를 반환
       조건식 안에 true를 넣으면 무한루프가 발생하기 때문에 반드시 탈출구문을 넣어야 함



[ while 's example - (1) ]

public class WhileEx01 {

		public static void main(String[] args) {
//			
//			int a = 1; //제어변수: 반복문의 횟수를 결정할 변수
//			
//			while(a<=10) {
//				System.out.println("hello"+a);
//			
//				a++; //제어변수 조작을 통해 반복의 조건식이 언젠가 false가 되도록 처리
//		
			//}
			
			
			//누적
			int i =1;
			int sum = 0;//누적할 변수
			
			while (i<=10) {
				
				sum +=i; 
				
				i++;
			}
			System.out.println("1~10까지의 합:" + sum);
			
		}
		
}



  [ while 's example - (2) ]
   : while문 안에 조건문(If문) 사용 가능

public class WhileEx02 {

		public static void main(String[] args) {
			
			//100번 회전하는 반복문에서 짝수만 출력
			
			int a=1;
			while(a<=100) {
				
				if( a % 2== 0) {
					
					System.out.print(a + " ");
				}
				
				a++;
			}
			
			System.out.println(); // 줄바꿈
			
			
			int j= 0;
			while( j <= 98) {
				
				j+=2;
				
				System.out.print(j + " ");
			}
		}
}



  [ while 's example - (3) ]

import java.util.Scanner;

public class WhileEx04 {
	public static void main(String[] args) {
		//정수를 입력 받고
		//입력받은 정수까지의 합
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수>");
		int num = sc.nextInt();
		int sum=0;
		int i = 1;
		while(i<=num) {
			System.out.println(i);
			
			//id의 합
			sum +=i;
			
			i++;
	
		}
		System.out.println(num +"까지 합:" + sum);
	

}
}



  [ while 's example - (4) ]

public class WhileEx06 {

		public static void main(String[] args) {
			
			// 배열과 반복문
			// 시작은 0~길이미만
			int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
			
			
			int sum =0;
			int i =0;
			
			//i <= arr.length - 1
			while(i < arr.length) {
						
				//System.out.println(i);
				//System.err.println(arr[i]);
				sum += arr[i];
							
				i++;
		}
			
			
			System.out.println("배열 요소의 합:" + sum);
}
}



  • 반복문 do ~ while : 조건식의 결과에 상관없이 루프를 반드시 한번 이상 실행시키도록 할 때 사용

 


        while문은 조건식을 먼저 검사하고 실행문이 반복되기 때문에
         처음 실행 조건이 false라면 실행문이 단 한번도 실행 X

        do ~ while문do 이하의 구문이 먼저 한 번 실행된 뒤에 조건식을 검사하므로
        결과가 true이든 false이든 무조건 한번은 실행

 

public class DoWhileEx {
	
	public static void main(String[] args) {
		
		
		//while문이 do~while 대체 할 수 있어서 많이 사용 x
		
		
		/*int i = 1;
		int sum = 0;
		while(i<=10) {
			
			sum +=i;
			
			i++;
		}
		System.out.println(sum);
		*/
		
		int sum = 0;
		
		int i = 1;
		do { //do~while문은 조건이 거짓이더라도 무조건 한 번은 실행을 함
			
			sum += i;
			i++;
            
		}while(i<=10);
		
		System.out.println(sum);
		
	}
}