본문 바로가기

3월 ~ 5월) 자바/숙쩨

4Day - if문 / for 문

if 문

        //변수에 저장된 문자값을 출력하세요.
        //단, 변수에 저장된 문자값이 소문자인 경우 대문자로 변환하여 출력하세요.

//        char mun = 'X';
//
//        // if에 들어갈 조건은 그렇다치고. 변환? 시켜주는 법을 모르겠음.
//        if (mun >= 'a' && mun<= 'z') {
//            System.out.println( mun + " 를" + " 대문자로 바꾸면 = "+'X');
//        } else {
//            System.out.println( mun +" 은" +" 소문자가 아니기 때문에, 대문자 변환이 되지않습니다.");
//        }


        char mun = 'x';
        if (mun >= 'a' && mun <= 'z') { // 변수값이 영문자 소문자인 경우
            mun -= 32; // mun = (char) (mun -32);
        }
        System.out.println( "mun = " + mun);
        
mun = X

// 변수에 저장된 정수값이 4의 배수인지 아닌지를 구분하여 출력하세요.

//        // !!!형변환? 어캐해줌??
//        int num = 345648;
//
//        // || 는 or 연산자
////        if ( num /4 == 0 || num == 4 ) {
////            System.out.println(num + " 는 4의 배수 입니다.");
////          이게 잘못된거같음!! 왜지??
//
//        if ( num %4 == 0 ) {
//            System.out.println( num + " 는 4의 배수 입니다.");
//        } // !!!. 왜 이게 되지?
//
//        else {
//            System.out.println (num + " 는 4의 배수가 아닙니다.");
//        }
//
//        // !!!아니라고 뜨는데, 그럼 무슨 배수 인지 알고싶음..ㅠ >> 이걸 어떻게 하는지 모르겠음.



        int num = 345644;
        if (num %4 == 0) {
            System.out.println("[결과] " + num + " 는 4 의 배수가 맞습니다.");
        }else {
            System.out.println("[결과] " + num + " 는 4 의 배수가 아닙니다.");
        }
        
[결과] 345644 는 4 의 배수가 맞습니다.

 

// 올해가 평년인지 윤년을 구분하여 출력하세요.
        // => 년도를 4로 나누어 나머지가 0인 경우 윤년
        // => 위 조건을 만족하는 년도 중 100으로 나누어 나머지가 0인 경우 평년
        // => 위 조건을 만족하는 년도 중 400으로 나누어 나머지가 0인 경우 윤년

//        int year = 2023;
//
//        if ( year %4 == 0 ) {
//            System.out.println( year + " 은 윤년 입니다.");
//        }
//
//            else if ( year %100 == 0) {
//                System.out.println( year + " 은 평년 입니다. ");
//            }
//
//        else {
//            System.out.println(year + " 은 윤년이 아닙니다");
//        }


        int year = 2023;
        if (year %4 == 0 && year % 100 != 0 || year % 400 == 0) { // if ( year을 4로 나눴을때 나머지가 0 &&(이고) year 100 나눠서 0이 아니 || 거나 year 나누기 400 나머지가 안남으면 )
            System.out.println("[결과] " + year + "년은 윤년입니다.");
        } else {
            System.out.println("[결과] " + year + "년은 평년입니다.");
        }
        
[결과] 2023년은 평년입니다.

 


 

        // 이름이 [홍길동]인 학생이 국어점수 89점, 영어점수 93점, 수학점수 95점을 받은 경우
        // 총점과 평균, 학점을 계산하여 이름, 총점, 평균, 학점을 출력하세요.
        // => 국어,영어,수학 점수 중 하나라도 0~100 범위가 아닌 경우 프로그램 강제 종료
        //    System.exit(0) : 프로그램을 강제로 종료하는 메소드
        // => 평균을 이용한 학점 계산 : 100~90:A, 89~80:B, 79~70:C, 69~60:D, 59~0:F
        // => 평균은 소숫점 두자리까지만 출력하고 나머지는 절삭 처리 하세요.


        String name = "홍길동";
        int kor= 89 , eng= 93, mat = 95;

        int sum = kor + eng + mat; // 합산
        double average = sum/3; // 학점


//        if (kor <= 100 && eng <= 100 && mat <= 100 ) {
//            System.out.println( "0 ~ 100 범위가 아닙니다.");
//            System.exit(0);

        if (kor >= 100 || kor <= 0 ) {
            System.out.println("국어점수 가 0 ~ 100 범위가 아닙니다.");
            System.out.println("프로그램을 종료 합니다.");
            System.exit(0);

        } if ( eng >= 100 || eng <= 0) {
            System.out.println("영어점수 가 0 ~ 100 범위가 아닙니다.");
            System.out.println("프로그램을 종료 합니다.");
                System.exit(0);

        } if ( mat >= 100 || mat <= 0) {
            System.out.println("수학점수 가 0 ~ 100 범위가 아닙니다.");
            System.out.println("프로그램을 종료 합니다.");
            System.exit(0);


            } else if (average <= 100 && average >= 90) {
                System.out.println( "평균은 " + average + " 점, A학점");

            } else if (average <= 89 && average >= 80) {
                System.out.println( "평균은 " + average + " 점, B학점");

            } else if (average <= 79 && average >= 70) {
                System.out.println( "평균은 " + average + " 점, C학점");

            } else if (average <= 69 && average >= 60) {
                System.out.println("평균은 " + average + " 점, D학점");

            } else if (average <= 59 && average >= 0) {
                System.out.println("평균은 " + average + " 점, F학점");

            } else {
                System.exit(0);
            }

        // 자꾸 B학점으로 멈춤; >> B학점 부터 &&(and) 말고 ||(or) 로 적어서 그럼.


        System.out.println("국어점수 + 영어점수 + 수학점수 의 합계는 \" " + sum + "점" + " \" ");

        // 자꾸 B학점으로 멈춤; >> B학점 부터 &&(and) 말고 ||(or) 로 적어서 그럼.


        System.out.println("국어점수 + 영어점수 + 수학점수 의 합계는 \" " + sum + "점" + " \" ");


평균은 10.0 점, F학점
국어점수 + 영어점수 + 수학점수 의 합계는 " 32점 "

        // 이름이 [홍길동]인 학생이 국어점수 89점, 영어점수 93점, 수학점수 95점을 받은 경우
        // 총점과 평균, 학점을 계산하여 이름, 총점, 평균, 학점을 출력하세요.
        // => 국어,영어,수학 점수 중 하나라도 0~100 범위가 아닌 경우 프로그램 강제 종료
        //    System.exit(0) : 프로그램을 강제로 종료하는 메소드
        // => 평균을 이용한 학점 계산 : 100~90:A, 89~80:B, 79~70:C, 69~60:D, 59~0:F
        // => 평균은 소숫점 두자리까지만 출력하고 나머지는 절삭 처리 하세요.


	String name = "홍길동";
	int kor= 89 , eng= 93, mat = 95;

        /*
        // 이건 불친절한 오류메시지임 (한번에 묶여있어서)
        if (kor > 100 || kor < 0 || (eng > 100 || eng < 0 ) || (mat < 100 || mat < 0)) {
            System.out.println("[에러] 0 ~ 100 범위를 벗어난 비정상적인 점수가 입력 되었습니다.");
            System.exit(0);
        }
         */


        boolean vaild = false; // 검증 결과를 저장하기위한 변수 - false : 검증 성공, true : 검증 실패

        if (kor > 100 || kor < 0) {
            System.out.println("[에러] 0 ~ 100 범위를 벗어난 비정상적인 국어점수가 입력 되었습니다.");
            // System.exit(0) - 둘다 에러일수있기때문에, 빼고 △ boolean 해줌
            vaild = true;
        }

        if (eng > 100 || eng < 0) {
            System.out.println("[에러] 0 ~ 100 범위를 벗어난 비정상적인 영어점수가 입력 되었습니다.");
            // System.exit(0) - 둘다 에러일수있기때문에, 빼고 △ boolean 해줌
            vaild = true;
        }

        if (mat > 100 || mat < 0) {
            System.out.println("[에러] 0 ~ 100 범위를 벗어난 비정상적인 수학점수가 입력 되었습니다.");
            // System.exit(0) - 둘다 에러일수있기때문에, 빼고 △ boolean 해줌
            vaild = true;
        }


        if (vaild) System.exit(0); // 검증이 실행한 경우 프로그램 종료

        int tot = kor + eng + mat;
        double ave = tot/3.;
        String grade = "";

        switch ((int)ave/10) {
            case 10:
            case 9: grade = "A";
                break;

            case 8: grade = "B";
                break;

            case 7: grade = "B";
                break;

            case 6: grade = "B";
                break;

            default: grade = "F";
        }
        System.out.println("이름 = " + name + " , 총점 = " + tot + " , 평균 = " + (int)(ave*100) / 100. + " , 학점 = " + grade);
        // (ave*100) 한 이유: 소수점으로 부터 2자리만 출력할거기때문.


이름 = 홍길동 , 총점 = 277 , 평균 = 92.33 , 학점 = A

 


For문

 

//본인 이름을 화면에 7번 출력하세요.
        //ex) 홍길동 홍길동 홍길동 홍길동 홍길동 홍길동 홍길동

        for (int i = 0; i < 7; i++) {
            System.out.print("홍길동" + " ");
        }

홍길동 홍길동 홍길동 홍길동 홍길동 홍길동 홍길동

 

       // 1~10 범위의 정수 중 홀수를 화면에 출력하세요.
        // ex) 1     3     5     7     9

        for (int i = 1; i < 10 ; i+=2) {
            System.out.print(i + "\t" );
        }
        
1	3	5	7	9

 

        // 1~100 범위의 정수에서 3의 배수들의 합계와 5의 배수들의 합계를 계산하여
        // 3의 배수의 합계에서 5의 배수의 합계를 뺀 결과값을 출력하세요.
        // ex) 결과 = 633

//            int ioi = 0;
//        for (int i = 0; i <= 100; i+=3 ) {
//            ioi += i;
//
//
//
//            for (int j = 0; j <= 100 ; j+= 5) {
//                int joj = 0;
//                joj += j;
//
//                int ioj = 0;
//                ioj = ioi - joj;
//                System.out.println(ioj);
//
//                // !!!!!  이거 어케하는거임??? 봐도봐도 모르겠음 !!
//
//            }
//        }

        
        int tot3 = 0;
        int tot5 = 0;

        for (int i = 1; i < 100 ; i++) {
            if (i%3 == 0)
                tot3+= i;

            if (i%5 == 0)
                tot5+= i;
        }
        
        System.out.println( "결과 = " + (tot3 - tot5));
        
결과 = 733

 

//구구단 중 7단을 화면에 출력하세요.
        //ex) 7 * 1 = 7
        //    7 * 2 = 14
        //    ...
        //    7 * 8 = 56
        //    7 * 9 = 63

//        int seven = 7;
//        for (int i = 1; i < 10; i++) {
//
//            int gobhagi = seven * =i;
//
//            System.out.println( "7 x " +  i + " = " + gobhagi);
//
//        }
        

        int dan = 7;
        for (int i = 1; i <= 9; i++) {
            System.out.println(dan + " * " + i + " = " + (dan * i));
            
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63

 

        //5!의 결과값을 출력하세요.(5! = 5 * 4 * 3 * 2 * 1)
        //ex) 5! = 120

//        for (int i = 5; i > 0 ; i--) {
//
//            int pop = 1; // 0적는데 작동안되서; 1로 바꿈
//            pop *= i;
//
//            System.out.print(pop + "\\");
//
//            // 어케하는건데.
//        }
//       
// 5\4\3\2\1\


 int num = 5;
        int fac = 1;
        for (int i = num; i >= 1; i--) {
            fac *= i;

        }
        System.out.println(num + "! = " + fac);
        
5! = 120

 

//두 변수에 저장된 정수값 사이의 정수들을 화면에 출력하세요.
        //단, 한 줄에 정수값이 7개씩 출력되도록 프로그램을 작성하세요.
        //ex) 36    27    38     39     40     41     42
        //    43    44    45     46     47     48     49
        //    50    51    52     53     54     55     56
        //    57

		int begin = 36;
        int end = 57;
        int count = 0; // 출력갯수를 저장할 변수

        for (int i = begin; i <= end ; i++) {
            System.out.print(i + "\t");
            count++; // count를 1씩 증가
            if (count%7 == 0) {
                System.out.println();
            }
        }
        System.out.println();
        
        
36	37	38	39	40	41	42	
43	44	45	46	47	48	49	
50	51	52	53	54	55	56	
57