국비지원 JAVA 풀스택 과정/JAVA

22.09.13 사전수업_3_조건문, 반복문

ODaram 2022. 9. 13. 11:00

▶ 조건문

// 3가지 형태
1. 조건에 맞으면 실행O 없으면 x if() {실행할 문장}
2. 조건에 맞으면 실행O 없으면 else문 if() {실행할 문장} else {거짓일 때 실행할 문장}
3. 조건에 맞으면 실행O 아니면 또다른 조건 if() {} if else{참일 때 실행 할 문장} else{거짓일 때 실행할 문장}

◈ if문

    System.out.println("----------예제 1-----------------");
    System.out.println("▶n을 10 초기화, n이 5 이상이면 변수 i에 +1 해라");
    int n = 10;
    int i = 0;
    if(n >= 5) {
        i++;
    }
    System.out.println("n이 5이상인 경우 i값 :"+i);
    System.out.println("\n");

    System.out.println("----------예제 2-----------------");
    System.out.println("▶아니면 -1해라");
    n=4;
    i=0;
    if(n >= 5) {
        i++;
    }else {
        i--;
    }
    System.out.println("n이 5이하인 경우 i값 :"+i);
    System.out.println("\n");

◈  if else문

    System.out.println("----------예제 3-----------------");
    System.out.println("▶변수 score가 grade 변수에 90정 이상'A', 80점 이상'B', 70점 이상'C', 그 외에는 'F'");
    int score= 50;
    char grade;
    if(score >= 90) {
        grade = 'A';
    }else if (score >= 80){
        grade = 'B'; 
    }else if (score >= 70) {
        grade = 'C';
    }else {
        grade = 'F';
    }
    System.out.println("당신의 점수는?"+grade);
    System.out.println("\n");

    System.out.println("----------예제 4-----------------");
    System.out.println("▶dust 변수에 임의의 숫자를 저장해놓고, 매우나쁨 : 151~ 마이크로그램, 나쁨 : 81 ~ 150, 보통 : 31 ~ 80, 좋음 : 0~30");	
    double dust = 151.5;
    String msg = "";
    if(dust > 151) {
        msg = "매우나쁨";
    }else if (dust > 80) {
        msg = "나쁨";
    }else if (dust > 30) {
        msg = "보통";
    }else if (dust > 0 ) {
        msg = "좋음";
    }else {
        msg = "측정불가";
    }
    System.out.println("오늘의 날씨는 "+ msg);
    System.out.println("\n");

◈  연산자 + 조건문

    System.out.println("----------예제 5-----------------");
    System.out.println("조건이 2개 이상일 때, and 조건");
    System.out.println("▶국어 점수, 수학점수가 모두 60점 이상이면 합격, 아니면 불합격");

    double kor = 55.5, math = 76.5;
    String res = "";

    if(kor >=60 && math >= 60) {
        res = "합격";
    }else {
        res="불합격";
    }
    System.out.println("당신의 합격여부 : "+res);
    System.out.println("\n");

    System.out.println("----------예제 6-----------------");
    System.out.println("조건 2개 or 조건");
    System.out.println("▶영업팀 1,2,3월의 영업실적을 판정하는데");
    System.out.println("1,2,3월 중 하나라도 실적이 60미만이었다면 면담을 출력하시오");

    double score1 = 60.5, score2 = 90, score3 = 80;
    if(score1 < 60 || score2 < 60 || score3 < 60) {
        System.out.println("면담");
    }else {
        System.out.println("면담 없음");
    }
    System.out.println("\n");

}

▶ 반복문

// 3가지
1. while문
   while (조건) {반복할 문장}
  - 선조건 , 한번도 실행 안될 수 도 있다.
  - 몇번 반복할지는 모르지만, 특정한 조건이 만족하면 종료
2. do ~ while 문 : while 문장 끝 세미클론이 찍힘
  do {반복할 문장} while(조건);
  - 후 조건 , 반드시 최소 한번 실행됨
ex) 값을 입력받는데 0이 들어오기 전까지 반복 ...
3. for 문
   for (초기화; 조건문; 증감) {}
   - 몇 번 반복할지 횟수를 알 수 있는 경우

 

▶ Scanner

◈ 키보드로 부터 입력 받을 때 사용하는 구문을 쓰기 위해 사용
     import java.util.Scanner;
    Scanner 변수명 = new Scanner(System.in);
        - 정수, 실수, 문자 형태로 변환 시켜줘야함

◈변수에 입력받은 타입 형태 변환 해주는 문장
    in.next(); String 타입 형태로 변환 (문자열)
    in.nextInt(); Int 형태로 변환 (정수)
    in.nextDouble(); double 형태로 변환 (실수)

◈  반복문 while + Scanner 

    System.out.println("---------------- 예제 1 ----------------");
    System.out.println("▶반복문 while, 조건이 참이면 반복하기");

    int num = -1;

    while (num != 0) {
        System.out.printf("숫자 입력 (0이면 중지) : ");
        Scanner in = new Scanner(System.in);
        num = in.nextInt();
    }
    System.out.println("종료");
    System.out.println("\n");
    System.out.println("---------------- 예제 2 ----------------");
    System.out.println("▶입력받은 숫자의 합계를 구해서 마지막 출력");		

    double sum=0, avg ;
    double count = 0;
    double num2 = -1;

    while (num2 != 0) {
        System.out.printf("숫자 입력 (0이면 중지) : ");
        Scanner in2 = new Scanner(System.in);
        num2 = in2.nextDouble();
        sum += num2;		// sum = sum + num2;
        count++;
    }
    count --;	// ☆마지막에 0입력한 횟수에서 빼기
    avg = sum / count;		// ★정수/정수 인경우 한개의 자료형을 실수로 강제형변환 시켜줘야함

    System.out.println("종료");
    System.out.println("입력받은 숫자의 합계 : " + sum);

    // 합계 / 개수  = 
    // ☆몇번 입력했는지 개수 카운트 하는 변수가 필요함
    // 정수 나누기는, 몫만 나온다.
    System.out.println("입력받은 숫자의 횟수 : " + count);
    System.out.println("입력받은 숫자의 평균 : " + avg);
    System.out.println("\n");

◈  반복문  for + Scanner 

    int num= -1, sum = 0, cnt = 0;
    double avg = 0; 

    System.out.println("--------------예제 1---------------------");
    System.out.println("▶반복 횟수가 정해진 반복문 작성하기");	
    while 문으로 작성하면 초기화, 종료조건, 증감조건 문이 따로 떨어져있음
    while (cnt > 5) {
        System.out.println("숫자 입력" + cnt + " : ");

        Scanner in = new Scanner(System.in);
        num = in.nextInt();
        sum += num;
        cnt++;
    }
    avg = (double)sum / cnt;

    System.out.println("종료");
    System.out.println("합계 : "+sum);
    System.out.println("\n");


 //그래서 횟수가 정해졌을때 for 문으로 작성하게됨 (for문에서 cnt 변수 부분은 i로 많이 씀)
    for (int i=0; i < 5; i++) {
        System.out.printf(i + "번쨰 숫자 입력 " + " : ");

        Scanner in = new Scanner(System.in);
        num = in.nextInt();
        sum += num;
        cnt++;
    }
    avg = (double)sum / cnt;
    System.out.println("종료");
    System.out.println("합계 : "+sum);
    System.out.println("평균 : "+avg);
변수 유효범위 : {} 중괄호 안에서 유효하다. 메모리에 존재한다.
내가 속한 중괄호를 벗어나면 사라진다. 메모리에 존재하지 않는다.
ex) for 문 안에 있는 i는 해당 조건문이 끝나면 메모리 상에서 사라지기 때문에
      for 문 밖에서 i를 불러올 수 없음

◈  반복문  for + 배열 (Array)

▶배열 // 변수 - 단독주택, 배열(리스트) - 아파트
int arr[] = new int[5];
5개 짜리 크기 배열 생성 해라
ㄴ 같은 문장 int[] arr = new int[5];
배열.length; = 배열의 길이(몇개인지) 구해줌
    System.out.println("--------------예제 2---------------------");
    System.out.println("▶arr 배열에 숫자를 입력하고 출력해라");

    int arr[] = new int[5]; 

    // 입력 반복문
    System.out.println("5개 숫자 저장이 가능한 배열에 숫자 입력하기");
    for (int i =0; i < arr.length; i++) {
        Scanner in = new Scanner(System.in);
        arr[i] = in.nextInt();
    }
    // 출력 반복문
//		System.out.println("입력받은 배열 출력하는 문장");
//		for (int i =0; i < arr.length; i++) {
//			System.out.println(arr[i]);
//		}

    // for문의 축약문 : 배열과 함께 많이 쓰임
    // 배열 + 반복문 줄이기
    // for (변수명 : 배열명) {}
    for (int a : arr) {
        System.out.println(a);
    }

◈  중첩 for문

// i = 단수, j = 곱하는 수
    for (int i=1; i<=9; i++) {
        for (int j = 1; j<=9; j++) {
            System.out.println(i+ "*" + j + " = " + i*j);
        }
        System.out.println("--------------------");
    }
// i = 2 찍고 j 1~9 찍고 
// i = 3 찍고 j 1~9 찍고 반복
}