고래씌
[JAVA] 4. 제어문(if) 본문
1. If 문
※ 기본적으로 프로그램의 진행은 순차적으로 진행됨.
단, 이 순차적인 흐름을 바꾸고자 한다면 제어문을 이용해서 직접 제어 가능.
(1) 선택적으로 실행시키고자 할 때 => 제어문(if, switch)
(2) 반복적으로 실행시키고자 할 때 => 반복문(for, while, do~while)
(3) 그 외에는 => 분기문
- 조건문 : 조건식을 통해 참이나 거짓이냐를 판단해서 그에 해당하는 코드 실행
- 조건식 => 반드시 결과값 true/false이여야 함. 보통의 조건에는 비교연산자, 논리연산자를 주로 사용함
- 조건문에는 크게 if문, switch문으로 나뉨
1.1 단독 if문
[표현법]
if(조건식) {
조건식이 true인 경우 실행할 코드
}
=> 조건식의 결과가 참일 경우 중괄호 블록 안의 코드가 실행
=> 조건식의 결과가 거짓일경우 중괄호 블록 안의 코드가 무시되고 넘어감
□ 삼항연산자를 조건문으로 바꿔보기
// 삼항연산자를 조건문으로 바꿔보기
public void method1() {
// 사용자에게 정수값을 입력받은 후 양수다, 양수가 아니다를 출력
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력해 주세요 : ");
int num = sc.nextInt(); // num > 0 ? "양수" : "음수"
if(num > 0) {
System.out.println("양수입니다");
}
if(num <= 0) {
System.out.println("양수가 아닙니다");
}
}
□ 단일if 및 if ~ else문
public void method2() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int num = sc.nextInt();
String result = "양수가 아닙니다";
if(num > 0) {
result = "양수입니다";
}
System.out.println(result);
// if(num > 0) {
// // 조건식이 true인 경우 실행될 코드
// System.out.println("양수입니다");
// }else {
// // 조건식이 false인 경우 실행될 코드
// System.out.println("양수가 아닙니다");
// }
□ if ~ else if 문
같은 비교대상으로 여러개의 조건을 제시해야될 경우 사용
if(조건식1) {
조건식1이 true라면 실행할 코드
} else if {
조건식2가 true라면 실행할 코드
} else if {
조건식n이 true라면 실행할 코드
} [else {
위 모든 조건식의 결과가 false라면 실행할 코드
// return; // 현재 메소드를 빠져나가는 역할을 수행
}]
★ return 문은 메소드를 종료하는 함수이기 때문에 사용하면 아래 내용 수행안하고 메소드가 종료되어 끝남!!!
public void method3() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int num = sc.nextInt();
if(num > 0) {
System.out.println("양수입니다");
}else if(num == 0) {
System.out.println("0입니다");
}else {
System.out.println("음수입니다");
}
// 가독성이 떨어짐
// if(num > 0) {
// System.out.println("양수입니다");
// }else {
// if(num == 0) {
// System.out.println("0입니다");
// }else {
// System.out.println("음수입니다");
// }
// }
}
public void method5() {
// 사용자에게 이름, 성별을 입력받아 남자인지 여자인지 출력하는 메소드
Scanner sc = new Scanner(System.in);
System.out.print("이름 : ");
String name = sc.nextLine();
System.out.print("성별 : ");
char gender = sc.nextLine().charAt(0);
// 출력예시 : x님은 x이다.
// 성별 값을 잘못 입력한 경우 => 잘못입력하셨습니다 출력
// if(gender == 'M' || gender == 'm') {
// System.out.printf("%s님은 %s이다.", name, "남자");
// }else if(gender == 'F' || gender == 'f') {
// System.out.printf("%s님은 %s이다", name, "여자");
// }else {
// System.out.println("잘못입력하셨습니다");
// }
String result = "";
if(gender == 'M' || gender == 'm') {
result = "남자";
}else if(gender == 'F' || gender == 'f') {
result = "여자";
}else {
System.out.println("잘못입력하셨습니다");
method5(); // 다시 이름과 성별을 입력할 수 있게끔 함수 호출
// 현재 메소드를 빠져나가는 역할을 수행. 아래 print문으로 안내려가고 종료됨
return;
}
System.out.printf("%s님은 %s이다.", name, result);
}
※ 특이케이스!!!
* 기본자료형 : boolean, byte, short, int, long, float, double, char
* 참조자료형 : 기본자료형이 아닌 모든 자료형 대표) String
- 문자열간의 동등비교(문자열 == 문자열)
- 동등할 수 있는 '==' 자료형은 기본자료형 밖에 없다! String형은 기본자료형 X
- 기본자료형간의 비교시에는 ==, != 사용가능하지만,
참조자료형은 동등비교 연산시 정상적으로 연산이 안됨.
왜냐하면, name과 같은 참조형 변수는 실제로 메모리에저 저장되어있는 주소값만 가지고 있기 때문!
Q. 그럼 어떻게 해야하나?
- 문자열.equals(비교문자열)로 비교하면된다. (동등성 비교)
- 문자열간의 동등비교를 할 때는 '메소드'를 통해 수행하여야 한다!
- equals() 반환값이 true or false 로 반환
public void method6() {
Scanner sc = new Scanner(System.in);
System.out.print("이름 : ");
String name = sc.nextLine();
// XXXX
// if(name == "이고래") {
// System.out.println("이고래님 반갑습니다");
// }else {
// System.out.println("누구세요?");
// }
if(name.equals("이고래")) {
System.out.println("이고래님 반갑습니다");
}else {
System.out.println("누구세요?");
}
}
public void method7() {
Scanner sc = new Scanner(System.in);
System.out.print("정수(양수)를 입력: ");
int num = sc.nextInt();
// 양수를 입력받고, 입력받은 값이 짝수인지 홀수인지 판별하는 프로그램
// 양수를 입력하지 않은 경우, "양수가 아닙니다. 잘못 입력하셨습니다." 출력된 후 다시 한번 입력할 수 있게 메소드 재호출
String result = "";
// if(num > 0 && num % 2 == 0) {
// result = "짝수입니다";
// }else if(num > 0 && num % 2 != 0){
// result = "홀수입니다";
// }else {
// System.out.println("양수가 아닙니다. 잘못 입력하셨습니다.");
// method7();
// return;
// }
//
// System.out.println(result);
if(num > 0) {
if(num % 2 == 0) {
result = "짝수입니다";
} else {
result = "홀수입니다";
}
}else {
System.out.println("양수가 아닙니다. 잘못 입력하셨습니다.");
method7();
return;
}
System.out.println(result);
}
'JAVA > JAVA 기초' 카테고리의 다른 글
[JAVA] 4-2. 제어문(실습문제) (0) | 2023.10.05 |
---|---|
[JAVA] 4-1. 제어문(Switch) (0) | 2023.10.05 |
[JAVA] 3. 연산자(산술연산자, 증감연산자, 복합연산자, 논리부정연산자, 비교연산자, 논리연산자, 삼항연산자) (0) | 2023.10.04 |
[JAVA] 2. 자료형 변환, printf 문 (0) | 2023.09.27 |
[JAVA] 1-3. Scanner 클래스 (0) | 2023.09.27 |