[Java] 조건문, 반복문

         조건문     

    1. if문

    (조건식)을 만족할 때 { } 안의 내용을 수행

    예제) java와 html 점수를 입력 받아 두 과목 중 한 과목이라도 80점 이상이면 '통과' 그렇지 않으면 '재시험' 처리

    import java.util.Scanner;
    public class IfAndWhile {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
    
            System.out.println("자바와 html 점수를 입력하세요.");
            int java = scan.nextInt();
            int html = scan.nextInt();
    
            if (java >= 80 || html >= 80) {
                System.out.println("통과");
            } else {
                System.out.println("재시험");
            }
        }
    }

     

    2. If~else if

    예제) 점수 입력 받아 학점 결과내기

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
            char grade = 'D';
    
            System.out.println("점수를 입력하세요>>");
            int score = scan.nextInt();
    
            if (score >= 90) {
                grade = 'A';
            } else if (score >= 80) {
                grade = 'B';
            } else if (score >= 70) {
                grade = 'C';
            } // end of if
            System.out.println("입력한 점수 : " + score);
            System.out.println("학점 : " + grade);
        }

    • else() 블럭 생략
      • 기본적으로 char grade = 'D';로 설정하여 아닌 경우에만(false) if문으로 들어가 값을 받는다.
      • 70점 미만일 경우엔 if문의 어느 블럭도 실행되지 않고 빠져나와 D학점이 나온다.

     

     

     

    3. switch문

    • 처리해야하는 경우의 수가 많을 때
    • 조건식의 결과는 int 범위 이하의 정수, 문자, 문자열만 가능하다.
    • case문의 값은 정수, 상수(문자 포함), 문자열만 가능하다(변수, 실수❌)
    • 중복되지 않아야 한다.

    더보기
    //주민번호를 입력 받아 (123971013-1234567)     7번째자리가 1 -남, 2 - 여, 3- 남, 4-여
    Scanner scan = new Scanner(System.in);
    
    System.out.println("주민번호 입력>>");
    String num = scan.next();
    
    char ssn = num.charAt(7);
    
    switch (ssn) {
    case '1' :           // '1' 실행하고 "남" 찍고 break를 만나 switch문을 빠져나옴
    case '3' :           // '3' 실행하고 "남" 찍고 break를 만나 switch문을 빠져나옴
        System.out.println("남");
        break;
    case '2' : 
    case '4' :
        System.out.println("여");
        break;
    default:
        System.out.println("없는 주민등록번호입니다.");    
    }

     

     

    더보기
    import java.util.Scanner;
    public class SwitchExam {
        public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
    
        System.out.println("현재 월을 입력하세요.>>");
        int month = scan.nextInt();        //입력 받은 값을 month에 저장
    
        switch(month) {
            case 1: case 2: case 12:
                System.out.println("현재의 계절은 겨울입니다");
                    break;
            case 3: case 4: case 5:
                System.out.println("현재의 계절은 봄입니다.");
                    break;    
            case 6: case 7: case 8:
                System.out.println("현재의 계절은 여름입니다.");
                    break;
            default:
                System.out.println("현재의 계절은 가을입니다.");    //9,10,11월
        } // switch 문
        }    //main 끝
    }


    현재 월을 입력 받아 month에 저장
    1월, 2월, 12월은 겨울 / 3월, 4월, 5월은 봄 / 6월, 7월, 8월은 여름으로 잡고 default를 가을로 지정.

    더보기
    Scanner scan = new Scanner(System.in);
            int orderCode1 = 0;
    //    String orderCodeString = "";
    
    System.out.println("음료를 주문하세요\n" + "1:커피 2:홍차 3:라떼 4:콜라 0:주문종료");
    String orderCodeString = scan.next();
    
            // switch문
            switch (orderCodeString) {
            case "1":
                System.out.println("커피를 주문하셨습니다.");
                break;
            case "2":
                System.out.println("홍차를 주문하셨습니다.");
                break;
            case "3":
                System.out.println("라떼를 주문하셨습니다.");
                break;
            case "4":
                System.out.println("콜라를 주문하셨습니다.");
                break;
            case "0":
                System.out.println("주문을 종료합니다.");
                break;
            default:
                System.out.println("잘못주문하셨습니다:( 다시 주문하세요.");
        }

     


     

         반복문     

    • for문 : 규칙적인 반복, 반복하려는 횟수를 알고 있을 때.
    • while문 : 조건이 중요할 때, 조건이 맞지 않으면 한 번도 실행하지 않을 수 있음.
    • do ~ while문 : 조건이 중요할 때, 반드시 한 번은 실행.

    1. for문

    더보기
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
    
            System.out.println("구구단 숫자 입력>");
            int dan = scan.nextInt();
    //        dan = Integer.parseInt(scan.next());
    
            System.out.println("<< " + dan + "단 >>");
    
            for (int num1 = 1; num1<=9; num1++ ) {
    
    //            System.out.println(dan + "*" + num1 + " = " + (dan * num1));
                System.out.printf("%d * %d = %2d\n", dan, num1, dan*num1);
            }
        }

     

    1-2. 중첩 for문

    public class ForAndWhile {
        public static void main(String[] args) {
    
            for (int i = 2; i <= 9; i++) { // i가 2일때 안쪽 for문을 9번 돌고 i=3으로 넘어감
                for (int j = 1; j <= 9; j++) {
                    System.out.println(i + " * " + j + " = " + (i * j));
                }
                System.out.println();
            }
        }
    더보기
    for(int i=1; i<=10; i++) {
        for(int j=1; j<=i; j++) {    
            System.out.print("*");
        }
        System.out.println();
    }

     

     

    i가 1일 때 j 1번 반복

    i가 2일 때 j 2번 반복, 3일때 j 3번 반복

    이를 응용해서 알고리즘 수업 때 다양한 모양으로 만들어보았다.

    반복문은 이후에도 많이 사용하니 꾸준히 연습할 것!🙂

     

     

     

     

     

    1-3. 향상된 for문

    • 배열 인덱스 문제를 해결할 수 있다. (ArrayIndexOutOfBoundsException 예외 방지)
    for ( 타입변수명 : 배열 또는 컬렉션) {
                //반복할 문장
    }
    // 향상된 for문으로 배열의 요소 모두 출력
    int[] arr = {10, 20, 30, 40, 50}
    
    for (int tmp : arr) {
        System.out.println(tmp);
    }

     


     

    2. While문 - 조건이 중요할 때, 반복횟수 모를 때

    • 조건식이 참이면 블럭{ }내의 문장을 수행하고 다시 조건식으로 돌아간다.
    • 거짓이 될때까지 이 과정을 계속 반복하고 거짓이면 문장 전체를 벗어난다.
    • for문과 달리 while문의 조건식은 생략할 수 없어서 항상 참이 되도록 하려면 true를 넣어야 한다.

    < for문과 while문의 비교 → 변환 가능 >

     

    2-1. do-while문

    • 블럭{}을 반드시 한 번 이상 반복한다. 사용자 입력받을 때 유용
    • while문은 시작부분에서 조건식을 확인하지만 do-while문은 문장을 한 번 이상 먼저 실행하고 후에 조건식을 확인한다. 이때 조건식이 참이면 계속 블럭을 실행하고 거짓이면 while문 빠져나옴
    더보기
    ❓ 사용자가 값을 입력하면 컴퓨터가 랜덤으로 작성한 숫자와 같으면 '정답입니다.'
        사용자가 입력한 값이 컴퓨터값보다 작으면 '더 큰 수를 입력하세요'
        사용자가 입력한 값이 컴퓨터값보다 크면 '더 작은 수를 입력하세요' 라는 메시지 출력
    public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		int input = 0, number = 0;
    		number = (int) (Math.random() * 100) + 1; // 1~100사이 숫자 랜덤 뽑기
    
    		do { // 조건식이 참일 때 수행될 문장들(처음 한 번은 무조건 실행)
    			System.out.println("1과 100 사이의 숫자를 입력>>");
    			input = scan.nextInt();
    
    			if (input > number) {
    				System.out.println("더 작은 수를 입력하세요.");
    			} else if (input < number) {
    				System.out.println("더 큰 수를 입력하세요.");
    			}
    
    		} while (input != number); // input!=number(조건)이 true -> do 계속 반복
    
    		System.out.println("정답: " + number);
    		System.out.println("정답입니다."); // input==number라면(false) do-while문 빠져나옴
    	}

     

         break문     

    • if문의 { }를 제외한 자신과 가장 가까이 있는 반복문{ }를 벗어난다.
    • break문 아래쪽 문장은 실행하지 않고 while문을 완전히 벗어난다.

     

         continue문     

    • 반복 진행 중에 continue문을 만나면 블럭의 끝으로 이동해 다음 반복으로 넘어간다.
      → for문에서는 증감식 부분으로 while 문에서는 조건식으로 이동
    • continue문 아래쪽 문장들은 실행X
    • break문과 달리 반복문을 벗어나지 않음
    더보기

     

    public class ContinueWhile {
      public static void main(String[] args) {
    
    	Scanner scan = new Scanner(System.in);
    
    	while (true) {
    	  System.out.println("1. square");
    	  System.out.println("2. square root");
    	  System.out.println("3. log");
    	  System.out.println("원하는 메뉴(1~3)을 선택하세요. (종료 : 0)");
    	
    	  String tmp = scan.nextLine();
    	  int menu = Integer.parseInt(tmp);
    	
      	  if (menu == 0) {
    	  	  System.out.println("프로그램을 종료합니다.");
    		  break;
    	  } else if (!(1 <= menu && menu <= 3)) {
    		  System.out.println("메뉴를 잘못 선택하셨습니다. (종료 : 0)");
    		  continue;
    	  }
    	  System.out.println("선택하신 메뉴는 " + menu + " 번입니다.");
    	}
      }
    }
    더보기

     

    public class ContinueWhile {
    public static void main(String[] args) {
    	Scanner scan = new Scanner(System.in);
    	while (true) {
    		System.out.println(">>주문 코드를 입력\n" + "1.커피 2.홍차 3.라떼 4.콜라 0.주문종료");
    
    		int orderCode = scan.nextInt();
    		String order = "";
    
    		if (orderCode == 1) {
    			order = "커피";
    		} else if (orderCode == 2) {
    			order = "홍차";
    		} else if (orderCode == 3) {
    			order = "라떼";
    		} else if (orderCode == 4) {
    			order = "콜라";
    		} else if (orderCode == 0) {
    			System.out.println("주문종료");
    			break;
    		} else {
    			System.out.println("주문 번호가 맞지 않습니다. 다시 주문하세요");
    			System.out.println();
    			continue;
    		}
    		System.out.println(order + " 주문하셨습니다.");
    		System.out.println();
    		}
    	}
    }

     

    댓글