Post

java 공부 2024.04.23

조건문

if, else if, else

  • if
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// learnJava 패키지에 포함된 클래스입니다.
package learnJava;

// JAVALEARN 이라는 공개 클래스를 선언합니다. 자바 프로그램의 실행은 이 클래스에서 시작됩니다.
public class JAVALEARN {
    // 자바 프로그램의 진입점인 main 메서드를 선언합니다.
    // String 배열을 인자로 받는 main 메서드는 프로그램이 실행될 때 호출됩니다.
    public static void main(String[] args) {
    	// turnOn 메서드를 호출하며, 인자로 30을 전달합니다.
    	// 이는 온도를 나타내며, 30도로 설정합니다.
        turnOn(30);
        // turnOn 메서드를 한 번 더 호출하며, 이번에는 19를 인자로 전달합니다.
        // 이는 온도를 나타내며, 19도로 설정합니다.
        turnOn(19);
    }
    
    // 온도를 기준으로 에어컨 가동 여부를 결정하는 turnOn 메서드를 정의합니다.
    // int 타입의 temp 매개변수를 받아 온도를 인자로 사용합니다.
    public static void turnOn(int temp) {
    	// if 문을 사용하여 조건을 확인합니다.
    	// 온도가 25도보다 높은지 확인합니다.
        if (temp > 25) {
    		// 조건이 참이면 콘솔에 현재 온도와 에어컨 가동 메시지를 출력합니다.
    		// printf 함수를 사용하여 형식화된 출력을 합니다.
            System.out.printf("현재 온도 %d도, 에어컨을 가동합니다.\n", temp);
    	}
    }
}
  • else if, else
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// learnJava 패키지에 속한 클래스입니다.
package learnJava;

// JAVALEARN 클래스를 선언합니다. 자바 프로그램의 실행은 이 클래스의 main 메서드에서 시작됩니다.
public class JAVALEARN {
    // main 메서드는 프로그램의 진입점입니다. String 배열을 매개변수로 받습니다.
    public static void main(String[] args) {
        // printGrade 메서드를 호출하여 96점을 전달합니다.
        printGrade(96);
        // printGrade 메서드를 호출하여 86점을 전달합니다.
        printGrade(86);
        // printGrade 메서드를 호출하여 70점을 전달합니다.
        printGrade(70);
        // printGrade 메서드를 호출하여 55점을 전달합니다.
        printGrade(55);
    }
    
    // printGrade 메서드는 점수를 받아 해당 점수의 학점을 출력합니다.
    // int 타입의 score 매개변수를 통해 점수를 입력 받습니다.
    public static void printGrade(int score) {
        // 학점을 저장할 String 타입의 변수 grade를 선언합니다.
        String grade = "";
        
        // 점수에 따라 학점을 결정하는 if-else 구조입니다.
        if (score >= 90) {
            // 점수가 90 이상인 경우, 학점은 'A'입니다.
            grade = "A";
        } else if (score >= 80) {
            // 점수가 80 이상 90 미만인 경우, 학점은 'B'입니다.
            grade = "B";
        } else if (score >= 70) {
            // 점수가 70 이상 80 미만인 경우, 학점은 'C'입니다.
            grade = "C";
        } else {
            // 점수가 70 미만인 경우, 학점은 'F'입니다.
            grade = "F";
        }
        // 형식화된 문자열을 사용하여 점수와 학점을 콘솔에 출력합니다.
        System.out.printf("%d점의 학점: %s\n", score, grade);
    }
}

switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// learnJava 패키지에 속한 클래스입니다.
package learnJava;

// JAVALEARN이라는 이름의 공개 클래스를 선언합니다.
public class JAVALEARN {
    // 프로그램의 진입점인 main 메서드입니다.
    public static void main(String[] args) {
        // light 메서드를 호출하며 "RED"를 인자로 전달합니다. 이는 빨간 불을 의미합니다.
        light("RED");
        // light 메서드를 호출하며 "YELLOW"를 인자로 전달합니다. 이는 노란 불을 의미합니다.
        light("YELLOW");
        // light 메서드를 호출하며 "GREEN"를 인자로 전달합니다. 이는 초록 불을 의미합니다.
        light("GREEN");
        // light 메서드를 호출하며 "Blue"를 인자로 전달합니다. 이는 파란 불을 의미합니다.
        light("Blue");
    }
    
    // light 메서드는 색상을 인자로 받아 해당 색상의 불을 켜는 로직을 실행합니다.
    public static void light(String color) {
        // switch 문을 사용하여 인자로 받은 color 값에 따라 다른 동작을 수행합니다.
        switch (color) {
            case "RED": // 색상이 빨간색인 경우
                // 콘솔에 "빨간불이 켜집니다."를 출력합니다.
                System.out.println("빨간불이 켜집니다.");
                break; // switch 문을 종료합니다.
            case "YELLOW": // 색상이 노란색인 경우
                // 콘솔에 "노란불이 켜집니다."를 출력합니다.
                System.out.println("노란불이 켜집니다.");
                break; // switch 문을 종료합니다.
            case "GREEN": // 색상이 초록색인 경우
                // 콘솔에 "초록불이 켜집니다."를 출력합니다.
                System.out.println("초록불이 켜집니다.");
                break; // switch 문을 종료합니다.
            case "Blue": // 색상이 파란색인 경우
                // 콘솔에 "파란불이 켜집니다."를 출력합니다.
                System.out.println("파란불이 켜집니다.");
                break; // switch 문을 종료합니다.
            default: // 정의되지 않은 색상의 경우
                // 콘솔에 에러 메시지를 출력합니다.
                System.out.printf("에러, 잘못된 색 입력: %s\n", color);
        }
    }
}

연산자

삼항연산자

삼항연산자이미지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// learnJava 패키지에 속한 클래스입니다.
package learnJava;

// JAVALEARN 클래스를 선언합니다. 이 클래스에서 자바 프로그램의 실행이 시작됩니다.
public class JAVALEARN {
    // main 메서드는 프로그램의 진입점입니다.
    public static void main(String[] args) {
        // printResult 메서드를 호출하며, 13을 인자로 전달합니다.
        printResult(13); // 13은 홀수입니다.
        // printResult 메서드를 호출하며, 6을 인자로 전달합니다.
        printResult(6);  // 6은 짝수입니다.
    }
    
    // printResult 메서드는 정수 n을 매개변수로 받아 그 정수가 짝수인지 홀수인지를 판별하고 결과를 출력합니다.
    public static void printResult(int n) {
        // n을 2로 나눈 나머지가 0이면 "짝수", 아니면 "홀수"를 result 변수에 저장합니다.
        // 삼항 연산자를 사용하여 짝수, 홀수를 판별합니다.
        String result = (n % 2 == 0) ? "짝수" : "홀수";
        // 형식화된 문자열을 사용하여 정수 n과 그 결과를 콘솔에 출력합니다.
        System.out.printf("정수 %d는 %s입니다.\n", n, result);
    }
}

논리연산자

|| (or), && (and), ^ (xor), ! (not)

  • || (or) 연산자는 두 조건 중 하나라도 참이면 참을 반환.
  • && (and) 연산자는 두 조건이 모두 참일 때만 참을 반환.
  • ^ (xor) 연산자는 두 조건이 서로 다를 때 참을 반환.
  • ! (not) 연산자는 조건의 반대를 반환. 즉, 조건이 참이면 거짓을, 거짓이면 참을 반환.

비교 연산자는 == (같음), != (다름), < (작음), > (큼), <= (작거나 같음), >= (크거나 같음) 등이 있으며, 이들은 두 값의 관계를 비교하여 참 또는 거짓을 결정.

논리연산자이미지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// learnJava 패키지에 속한 클래스입니다.
package learnJava;

// JAVALEARN 클래스를 선언합니다. 이 클래스에서 프로그램의 실행이 시작됩니다.
public class JAVALEARN {
    // main 메서드는 프로그램의 진입점입니다.
    public static void main(String[] args) {
        // printScholarship 메서드를 호출하여 "Park"의 수학 100점, 영어 92점 결과를 전달합니다.
        printScholarship("Park", 100, 92);
        // printScholarship 메서드를 호출하여 "Kim"의 수학 82점, 영어 96점 결과를 전달합니다.
        printScholarship("Kim", 82, 96);
        // printScholarship 메서드를 호출하여 "Choi"의 수학 82점, 영어 88점 결과를 전달합니다.
        printScholarship("Choi", 82, 88);
    }
    
    // printScholarship 메서드는 학생의 이름과 수학, 영어 점수를 매개변수로 받아 장학금 지급 여부를 결정하고 결과를 출력합니다.
    public static void printScholarship(String name, int math, int eng) {
        // 결과를 저장할 문자열 변수 result를 선언합니다.
        String result = "";
        
        // 수학과 영어 점수를 평가하여 장학금을 결정합니다.
        if(math >= 90 && eng >= 90) {
            // 수학과 영어 점수가 모두 90점 이상이면 "전액 장학금"을 부여합니다.
            result = "전액 장학금";
        } else if (math >= 90 || eng >= 90) {
            // 수학 또는 영어 점수 중 하나라도 90점 이상이면 "반액 장학금"을 부여합니다.
            result = "반액 장학금";
        } else {
            // 두 과목 모두 90점 미만이면 장학금을 지급하지 않습니다.
            result = "다음 기회에~";
        }
        // 학생의 이름과 장학금 결과를 형식화된 문자열로 콘솔에 출력합니다.
        System.out.printf("%s => %s\n", name, result);
    }
}

반복문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// learnJava 패키지에 속한 클래스입니다.
package learnJava;

// JAVALEARN이라는 이름의 공개 클래스를 선언합니다.
public class JAVALEARN {
    // main 메서드는 프로그램의 진입점입니다.
    public static void main(String[] args) {
        // 정수 변수 n을 선언하고 1로 초기화합니다.
        int n = 1;
        // n이 4보다 작을 동안 while 루프를 실행합니다.
        while (n < 4) {
            // 현재 n의 값을 콘솔에 출력합니다.
            System.out.println(n);
            // n의 값을 1씩 증가시킵니다.
            n++;
        }
        // 루프가 종료된 후, "END"를 콘솔에 출력합니다.
        System.out.println("END");
    }
}

문제 풀기

문제 1 BMI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package learnJava;
import java.util.Scanner;  // Scanner 클래스를 가져옵니다.

public class JAVALEARN {
    public static void main(String[] args) {
        Scanner myObj = new Scanner(System.in);  // Scanner 객체를 생성
        System.out.println("키를 입력하세요 (cm): ");  // 사용자에게 키 입력을 요청.
        int cm = myObj.nextInt();  // 키를 정수로 입력받기.
        System.out.println("키 : " + cm + " cm");  // 입력받은 키를 출력.

        System.out.println("몸무게를 입력하세요 (kg): ");  // 몸무게 입력을 받기.
        float kg = myObj.nextFloat();  // 몸무게를 실수로 입력받기.
        System.out.println("몸무게 : " + kg + " kg");  // 입력받은 몸무게를 출력.

        float meters = cm / 100.0f;  // 센티미터를 미터로 변환.
        float squaredHeight = meters * meters;  // 키의 제곱을 계산.
        float bmi = kg / squaredHeight;  // BMI를 계산.
        System.out.printf("BMI: %.2f\n", bmi );  // 계산된 BMI를 출력.
    
        func(bmi);
    }
   public static void func(float bmi) {
        // 조건문으로 출력
	   if (bmi >= 30) {
		   System.out.println("비만도: 비만");
	   }else if (bmi >= 25) {
		   System.out.println("비만도: 과체중");
	   }else if (bmi >= 18.5) {
		   System.out.println("비만도: 정상");
	   }else {
		   System.out.println("비만도: 저체중");
	   }
   }
}

ㅇㅈ씨 :

ㅇㅈ씨코드

문제 2 급여

문제2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package learnJava;

public class JAVALEARN {
    public static void main(String[] args) {
        printSalary(10000, 160);  // 시간당 임금과 근무 시간을 인자로 제공
        printSalary(15000, 175);
        printSalary(9000, 180);
        printSalary(13000, 190);
    }

    public static void printSalary(int wage, int hours) {
        int baseHours = 160;  // 기본 근무 시간
        float overtimeRate = 1.5f;  // 추가 근무 요율
        int basePay = 0;  // 기본 급여
        int overtimePay = 0;  // 추가 근무 급여
        
        // 기본 시간이 만약 160을 초과
        if (hours > baseHours) {
            // 초과 근무 시간 계산
            int overtimeHours = hours - baseHours;
            // 기본 급여 계산
            basePay = baseHours * wage;
            // 추가 근무 급여 계산
            overtimePay = (int) (overtimeHours * wage * overtimeRate);
        // 기본 시간 이하일 때의 급여 계산
        } else {
            
            basePay = hours * wage;
        }
        
        // 기본 급여가 10000 보다 작을 시 syso
        if (wage < 10000) {
        	
        	System.out.println("[에러]기본 시급이 1만 원보다 작습니다.");
        // 근무시간이 180보다 많을시 syso
        }else if (hours > 180) {
        	System.out.println("[에러]근무시간이 180시간을 초과하였습니다.");
        }
        // 그것도 아닐시 syso
        else {
        	// 총 급여 계산
            int totalPay = basePay + overtimePay;
            System.out.println("[급여]" + totalPay);  // 총 급여 출력
        }
        
    }
}

나는 위처럼 풀었는데 다른 사람들을 보니까 잘 푼 사람들이 있어서 사진을 찍어왔다.

ㅈㅎ씨 :

ㅈㅎ씨코드

엄청 코드가 짧다..역시 수학을 잘해야하는건가. 수학을 다시 열심히 공부해야겠다.

문제 3 별

내가 푼 것

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package learnJava;

public class JAVALEARN {
    public static void main(String[] args) {
    	for (int i = 1; i <11; i ++) {
            for (int j = 10 - i; j > 0; j--){
            System.out.print(" ");
            }
            for (int j = 1; j < i * 2; j++){
            System.out.print("*");
            }
             System.out.println();
            
        }
         for (int i = 9; i > 0; i --) {
            for (int j = i; j < 10; j++){
            System.out.print(" ");
            }
            for (int j = 1; j < i * 2; j++){
            System.out.print("*");
            }
             System.out.println();
            
        }
    	
    }
}

다른 사람이 푼 것

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package learnJava;

public class JAVALEARN {
    public static void main(String[] args) {
    	for(int i = 1; i < 20; i+=2) {
    		for(int j = 19; j > i; j-=2) {
    			System.out.print(" ");
    		}
    		for(int j = 0; j < i; j++) {
    			System.out.print("*");
    		}
    		System.out.println();
    	}
    	for(int i = 1; i < 20; i+=2) {
    		for(int j = 0; j < i; j+=2) {
    			System.out.print(" ");
    		}
    		for(int j = 18; j > i; j--) {
    			System.out.print("*");
    		}
    		System.out.println();
    	}
     
 
    }
}
This post is licensed under CC BY 4.0 by the author.