if - else 문
// hello_java 패키지 내의 Grade 클래스
package hello_java;
// Grade 클래스 정의
public class Grade {
// 메인 메서드 - 프로그램 실행 시작점
public static void main(String[] args) {
// printGrade 메서드 호출하여 각 점수에 대한 학점 출력
printGrade(96); // 'A' 학점 출력
printGrade(86); // 'B' 학점 출력
printGrade(70); // 'C' 학점 출력
printGrade(55); // 'F' 학점 출력
}
// printGrade 메서드 - 점수를 입력받아 학점을 결정하고 출력하는 메서드
public static void printGrade(int score) {
String grade = ""; // 학점을 저장할 변수
// 조건문을 사용하여 점수에 따라 학점을 결정
if (score >= 90) {
grade = "A"; // 90점 이상일 때 'A'
} else if (score >= 80) {
grade = "B"; // 80점 이상 90점 미만일 때 'B'
} else if (score >= 70) {
grade = "C"; // 70점 이상 80점 미만일 때 'C'
} else {
grade = "F"; // 70점 미만일 때 'F'
}
// 점수와 학점을 형식에 맞게 출력
System.out.printf("%d점의 학점: %s\n", score, grade);
}
}
void : 반환할 값이 없을 때 쓰는 TYPE
컴퓨터는 메인 메서드부터 찾음
컴퓨터가 코드를 읽는 순서
|
switch 문
// hello_java 패키지 내의 TrafficLight 클래스
package hello_java;
// TrafficLight 클래스 정의
public class TrafficLight {
// 메인 메서드 - 프로그램 실행 시작점
public static void main(String[] args) {
// light 메서드 호출하여 각 신호등 색에 대한 동작 수행
light("RED"); // 빨간 불이 켜짐
light("YELLOW"); // 노란 불이 켜짐
light("GREEN"); // 초록 불이 켜짐
light("BLUE"); // 잘못된 색 입력에 대한 에러 처리
}
// light 메서드 - 입력받은 색에 따라 신호등의 상태를 출력하는 메서드
public static void light(String color) {
// switch 문을 사용하여 color 변수의 값에 따라 다른 동작 수행
switch (color) {
case "RED":
System.out.println("빨간 불이 켜집니다."); // 빨간 불 상태 출력
break;
case "YELLOW":
System.out.println("노란 불이 켜집니다."); // 노란 불 상태 출력
break;
case "GREEN":
System.out.println("초록 불이 켜집니다."); // 초록 불 상태 출력
break;
default:
// 기본 경우, 즉 정의되지 않은 다른 색을 입력받았을 때의 에러 메시지 출력
System.out.printf("에러, 잘못된 색 입력: %s\n", color);
}
}
}
추가 설명
- 클래스와 메서드: TrafficLight 클래스는 메인 메서드와 light 메서드로 구성되어 있습니다. 메인 메서드에서는 light 메서드를 여러 번 호출하여 신호등의 색상에 따른 동작을 시뮬레이션합니다.
- Switch 문: light 메서드 내부에서는 switch 문을 사용하여 입력된 color 값에 따라 다른 동작을 수행합니다. 각 case는 특정 색을 처리하고, default는 입력된 색이 정의된 색상이 아닐 때 실행됩니다.
- 출력: 각 색상에 대한 메시지는 System.out.println 또는 System.out.printf를 사용하여 출력됩니다. 이를 통해 사용자에게 현재 신호등의 상태가 어떤지 알려줍니다.
이 코드는 조건 분기를 처리하는 데 있어 if-else 구조 대신 switch 문을 사용하는 좋은 예입니다. switch 문은 특정 변수의 값에 따라 다수의 경우를 쉽게 처리할 수 있게 해줍니다.
switch 문의 특징
- 실행 흐름의 이해: 한 case에 해당하는 코드를 실행한 후, break 문을 만나지 않는다면, 실행은 "넘어가(fall through)" 다음 case로 계속됩니다.
- 값의 제한: case에 사용할 수 있는 값은 상수이어야 하며, 변수나 런타임에 결정되는 값은 사용할 수 없습니다.
- 타입의 제한: 초기에는 switch 문에서 정수 타입만 사용할 수 있었지만, Java 7 이상부터는 문자열(String)도 사용할 수 있습니다.
- 효율성: switch 문은 if-else 조건문에 비해 종종 더 효율적으로 코드를 조직할 수 있게 해줍니다. 특히 많은 조건을 검사해야 할 때 코드의 가독성을 높여줍니다.
switch문에서 break를 사용하는 이유
switch 문에서 break 키워드를 사용하는 이유는 각 case 블록의 실행을 완료한 후 switch 문에서 빠져나오도록 하기 위해서입니다. break가 없으면, 프로그램은 해당 case를 실행한 후에 다음 case로 "넘어가서(fall through)" 계속 실행하게 됩니다. 이를 방지하기 위해 각 case 끝에 break를 사용합니다.
삼항 연산자
// hello_java 패키지 내의 OddOrEven 클래스
package hello_java;
public class OddOrEven {
public static void main(String[] args) {
printResult(13); // 13은 홀수
printResult(6); // 6은 짝수
}
// 정수를 입력받아, 홀수나 짝수 여부를 출력하는 메서드
public static void printResult(int n) {
// 삼항 연산자를 사용하여 n이 짝수인지 홀수인지 판별
String result = (n % 2 == 0) ? "짝수" : "홀수";
// 판별 결과를 출력
System.out.printf("정수 %d는 %s입니다. \n", n, result);
}
}
코드 설명
- 메인 메서드 (main): 프로그램의 실행이 시작되는 지점입니다. printResult 메서드를 두 번 호출하여 각각의 정수 13과 6에 대해 홀수 또는 짝수 여부를 출력합니다.
- 메서드 (printResult): 이 메서드는 정수 n을 매개변수로 받아 홀수인지 짝수인지를 판별하고 결과를 출력합니다.
- 삼항 연산자: (n % 2 == 0) ? "짝수" : "홀수"는 n을 2로 나눈 나머지가 0이면 "짝수", 그렇지 않으면 "홀수"를 result 변수에 저장합니다.
- 출력: System.out.printf를 사용하여 결과를 형식에 맞게 출력합니다. %d는 정수를, %s는 문자열을 나타냅니다.
삼항 연산자에 대한 추가 설명
삼항 연산자는 조건 ? 참일 때 값 : 거짓일 때 값의 형식으로 작성됩니다. 이 연산자는 간단한 조건 판단에 매우 유용하며, 코드를 간결하게 만드는 데 도움을 줍니다. 여기서는 짝수와 홀수를 판별하는 데 사용되었습니다.
논리 연산자
AND(&&), OR(||), XOR( ^) NOT(!)
// hello_java 패키지 내의 Scholarship2 클래스
package hello_java;
public class Scholarship2 {
public static void main(String[] args) {
// printScholarship 메서드 호출하여 학생들의 장학금 결과를 출력
printScholarship("Park", 100, 92); // Park 학생은 전액 장학금
printScholarship("Kim", 82, 96); // Kim 학생은 반액 장학금
printScholarship("Choi", 82, 88); // Choi 학생은 다음 기회에
}
// printScholarship 메서드 - 이름과 두 과목의 점수를 받아 장학금 결과를 결정하고 출력하는 메서드
public static void printScholarship(String name, int math, int eng) {
String result = ""; // 결과를 저장할 변수
// 조건문을 통해 장학금 수여 조건을 판별
if (math >= 90 && eng >= 90) {
result = "전액 장학금!"; // 수학과 영어 점수가 모두 90점 이상일 때
} else if (math >= 90 || eng >= 90) {
result = "반액 장학금!"; // 수학 또는 영어 점수 중 하나라도 90점 이상일 때
} else {
result = "다음 기회에~"; // 그 외의 경우
}
// 결과를 출력
System.out.printf("%s => %s\n", name, result);
}
}
코드 설명
- 메인 메서드 (main): 프로그램의 시작점입니다. printScholarship 메서드를 세 번 호출하여 각 학생의 이름과 수학, 영어 점수를 인자로 전달합니다.
- 메서드 (printScholarship): 이 메서드는 학생의 이름(name)과 두 과목의 점수(math, eng)를 매개변수로 받습니다. 장학금의 수혜 여부를 결정하기 위해 조건문(if-else)을 사용합니다.
- 조건문:
- 첫 번째 if문은 두 과목 점수 모두 90점 이상일 때 "전액 장학금!"을 부여합니다.
- else if문은 두 과목 중 하나라도 90점 이상이면 "반액 장학금!"을 부여합니다.
- else문은 위의 조건에 모두 해당하지 않을 때 "다음 기회에~"라는 결과를 부여합니다.
- 조건문:
- 출력: 각 학생의 이름과 해당 결과를 System.out.printf를 사용해 출력합니다. %s는 문자열을 나타내는 서식 지정자입니다.
'공부 기록 > JAVA' 카테고리의 다른 글
2024.05.21. Java [예외 처리] (0) | 2024.05.21 |
---|---|
2024.04.18. Java 2 (0) | 2024.04.18 |