본문 바로가기

컴퓨터언어/JAVA(자바)

[JAVA강좌] 15강 조건문 if문

728x90
반응형

 

 

 

 

 

- 조건문이란 조건에 따라 다른 코드를 선택할 수 있도록 프로그래밍하는 것을 말합니다.

- 이전에 배웠던 삼항연산자도 사실 조건문 개념이었던 거죠.

- 예를 들어 점수가 80점 이상이면 합격이다! 라는 문장이 있다면 점수가 80점 이상이 조건입니다.

- 합격이 그에 따른 결과가 되는 겁니다.

- 오늘은 조건문 중에서 IF문을 해보도록 하겠습니다. 

 

 

 

 

 

 

 

1. 기본 if문


- if문 중 가장 기본이 되는 if문을 보도록 하겠습니다.

- 조건이 맞으면 코드블록 { } 내부의 명령을 실행하는 구문입니다.

 

 

 

1) 기본 if문 문법

 

## 문법

if(조건식) {
  참일 때 코드;
}

 

- 그럼 위에서 봤던 점수가 80점이상이면 합격이다를 보도록 하겠습니다.

만일(점수가 80점이상이면){
	합격입니다;
}

 

- 이런 식으로 구현이 됩니다. 

- 어떤가요? 한글 작성 방식과 비슷하죠?

- 어순을 그대로 읽으면 됩니다. 

- if문은 쉬워보일 순 있으나 반드시 습득해야 하는 중요한 구문입니다. 

 

 

 

 


 

 

 

2) 기본 if문 예제 코드

- 그럼 직접적으로 문제를 풀어 보겠습니다.

사용자에게 점수를 입력받아 만일 점수가 80점이상이라면
[합격]이라고 출력하는 프로그램을 만드시오.

 

- 아래에서는 직접 실습으로 확인해 보겠습니다.

- 패키지(ch11_condition)과 클래스(Ex01_BasicIf.java)를 추가해 주세요. 

- 기초적 작업을 모르는 분은 아래 주소를 클릭하고 보고 오세요.

https://ossam5.tistory.com/613

 

[JAVA강좌] 1강 JAVA변수와 자료형

1. 프로젝트 패키지 생성 및 자바 파일 생성 - 앞으로의 강좌에서는 패키지 생성 및 자바 파일 생성하는 것을 보여드리진 않겠습니다. - 지금 잘 확인해 주시기 바랍니다. 1) 프로젝트 패키지 생성

ossam5.tistory.com

 

 

 

## 기본 if문 실습1 - Ex01_BasicIf.java

package ch11_condition;

import java.util.Scanner;

public class Ex01_BagicIf {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("점수입력 : "); //엔터없이 문구 출력
		
		int score = scan.nextInt(); //점수를 정수로 입력받는 변수
		
		if(score >= 80) { //점수가 80점이상이면
			System.out.println("합격");
		}
		
		scan.close(); //스캐너 종료
	}

}

 

- 코드에 대한 설명은 주석으로 작성했습니다. 

- 혹시 Scanner에 에러가 발생하면, 이클립스로 한다면 [Ctrl]+[Shift]+[O]를 눌러 스캐너를 import해옵니다.

- Scanner 클래스 기능을 잘 모른다면 아래 강좌를 보고 오세요.

https://ossam5.tistory.com/628?category=1196505

 

[JAVA강좌] 13강 삼항연산자(조건처리연산자)

- 삼항연산자는 항이 3개인 연산자입니다. - 앞에서 배웠던 연산자와는 다르게 조건문으로 보는 것이 좋습니다. - 이번 강좌에서는 true / false 결과에 따라 다른 결과를 주는 삼항연산자를 보도록

ossam5.tistory.com

 

 

 

## 기본 if문 결과1 - Ex01_BasicIf.java

- 90이라고 쓰니 합격이라고 나옵니다.

- 녹색은 나오는 것이 아니니 [Ctrl]+[F11]로 실행 후 콜론 : 뒤에 마우스 커서로 클릭한 후에 90이라고 작성합니다.

 

- 이번에는 50이라고 입력했습니다.

- 결과가 전혀 나오지 않는 것을 확인할 수 있습니다.

- 현실에서는 우린 합격이 아니면 불합격이라는 것을 압니다.

- 하지만 컴퓨터는 개발자가 지시하지 않은 구문은 실행하지 않습니다.

- 그러니까 틀린 경우도 코드를 처리해야겠죠? 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

2. if else문


- 이번에는 조건식이 맞지 않은(틀린) 경우에도 코드를 실행하는 if else문을 보도록 하겠습니다.

- 조건이 맞으면 첫번째 코드블록 { } 내부의 명령을 실행하고, 맞지 않으면 else뒤의 코드블록 { } 내부의 명령을 실행합니다.

 

 

 

1) if else문 문법

 

## 문법

if(조건식) {
	참일 때 코드;
} else {
	거짓일 때 코드;
}

 

- 그럼 위에서 봤던 것을 추가해서 점수가 80점 이상이면 합격이고, 그렇지 않으면 불합격이다! 를 보겠습니다.

만일(점수가 80점이상이면){
	합격입니다;
}그렇지 않으면{
	불합격입니다;
}

 

- 이런 식으로 구현이 됩니다. 

- 어떤가요? 한글 작성 방식과 비슷하죠?

- 어순을 그대로 읽으면 됩니다. 

- if else문도 쉬워보일 순 있으나 반드시 습득해야 하는 중요한 구문입니다. 

 

 

 

 


 

 

 

 

 

2) if else 문 예제 코드

- 그럼 직접적으로 문제를 풀어 보겠습니다.

사용자에게 점수를 입력받아 만일 점수가 80점이상이라면 [합격]이라고 출력하고, 
그렇지 않으면 [불합격]이라고 출력하는 프로그램을 만드시오.

 

 

## if else문 실습1 - Ex02_IfElse.java

package ch11_condition;

import java.util.Scanner;

public class Ex02_IfElse {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("점수입력 : "); //엔터없이 문구 출력
		
		int score = scan.nextInt(); //점수를 정수로 입력받는 변수
		
		if(score >= 80) { //점수가 80점이상이면
			System.out.println("합격"); //합격 출력
		}else { //그렇지 않으면
			System.out.println("불합격"); //불합격 출력
		}
		
		scan.close(); //스캐너 종료
	}

}

- 코드에 대한 설명은 주석으로 작성했습니다. 

 

 

## if else문 결과1 - Ex02_IfElse.java

- 90이라고 쓰니 합격이라고 나옵니다.

- 녹색은 나오는 것이 아니니 [Ctrl]+[F11]로 실행 후 콜론 : 뒤에 마우스 커서로 클릭한 후에 90이라고 작성합니다.

 

- 50점이라고 입력하면 기본 if문과는 다르게 불합격이라고 나오는 것이 확인됩니다.

- 그럼 참인 경우와 거짓인 경우 코드를 다르게 하는 것을 보았습니다.

- 하지만 세상은 2가지 경우만 있는 것은 아니죠?

- 결과가 3개 이상일 때는 어떻게 하는지 보도록 하겠습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. if else if문


- 이번에는 조건식을 여러개로 작성해서 여러 코드블록을 실행할 수 있는 if else if문을 보도록 하겠습니다.

 

 

1) if else if문 문법

 

## 문법

if(조건식1) {
	조건식1이 참일 때 코드;
} else if(조건식2) {
	조건식2가 참일 때 코드;
} else {
	조건식1과 조건식2가 거짓일 때 코드;
}

- else if() { } 파트는 여러 번 추가될 수 있습니다. 

 

- 그럼 이번에는 신입사원 입사점수가 90점 이상이면 기획팀, 80점 이상이면 총무팀, 나머지는 영업팀으로 처리한다고 보도록 하겠습니다.

만일(신입사원점수가 90점이상이면){
	기획팀입니다;
}그렇지 않고 만약(신입사원점수가 80점이상이면){
	총무팀입니다;
}그렇지 않으면{
	영업팀입니다;
}

 

- 이런 식으로 구현이 됩니다. 

- 어떤가요? 한글 작성 방식과 비슷하죠?

- 어순을 그대로 읽으면 됩니다.

 

 

 


 

 

 

 

 

2) if else if문 예제 코드

- 그럼 직접적으로 문제를 풀어 보겠습니다.

사용자에게 신입사원 입사점수를 입력받아 90점이상이면 [기획팀],
80점이상이면 [총무팀], 나머지는 [영업팀]으로 출력하는 프로그램을 만드시오.

 

 

 

## if else if문 실습1 - Ex03_IfElseIf.java

package ch11_condition;

import java.util.Scanner;

public class Ex03_IfElseIf {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("입사점수입력 : "); //엔터없이 문구 출력
		
		int score = scan.nextInt(); //점수를 정수로 입력받는 변수
		
		if(score >= 90) { //점수가 90점이상이면
			System.out.println("기획팀"); //기획팀 출력
		}else if(score >= 80){ //그렇지 않고 80점이상이면
			System.out.println("총무팀"); //총무팀 출력
		}else {
			System.out.println("영업팀"); //영업팀 출력
		}
		
		scan.close(); //스캐너 종료
	}

}

- 코드에 대한 설명은 주석으로 작성했습니다. 

- 가끔 80점이상에는 90점, 95점도 들어가는 게 아닌지 질문하시는 분들이 있습니다.

- 90점이상이어서 기획팀을 출력하면 if문에서 빠져나가기 때문에 아래 코드들은 읽지 않습니다.

- 그래서 95점을 입력했을 때, 총무팀으로 잘못 출력될 일은 없습니다.

 

 

## if else if문 결과1 - Ex03_IfElseIf.java

- 95라고 쓰니 기획팀이라고 나옵니다.

- 녹색은 나오는 것이 아니니 [Ctrl]+[F11]로 실행 후 콜론 : 뒤에 마우스 커서로 클릭한 후에 95이라고 작성합니다.

 

- 85라고 쓰니 기획팀이라고 나옵니다.

 

- 75라고 쓰니 기획팀이라고 나옵니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

4. 중첩 if문


- 이번에는 if문을 중첩해서 쓰는 중첩 if문을 보도록 하겠습니다. 

 

 

1) 중첩 if 문 문법

 

## 문법

if(조건식) {
	if(조건식) {
    
    }
 }

 

- if문의 코드 블록 안에 또 if문을 쓰는 것을 중첩 if문이라고 합니다.

- 이건 코딩에 따라 다른데 if else if를 엄청 많이 써서 조건을 만드는 방법도 있고, 이렇게 중첩 if문을 만드는 방법도 있습니다. 

 

 


 

 

 

 

2) 중첩 if문 예제 코드

- 그럼 직접적으로 문제를 풀어 보겠습니다.

- 아까 80점이상이면 합격, 그렇지 않으면 불합격일 때 실제 120점을 입력해도 합격입니다.

- 근데 보통 점수는 0~100 사이죠?

- 그래서 제약을 걸고 싶은 문제를 만들어 보겠습니다.

 

사용자에게 점수를 입력받아 만일 점수가 80점이상이라면 [합격]이라고 출력하고, 
그렇지 않으면 [불합격]이라고 출력하는 프로그램을 만드시오.
- 단, 사용자에게 점수는 0~100사이 정수만 입력받으시오.

 

 

 

## 중첩 if문 실습1 - Ex04_IfElseIf.java

package ch11_condition;

import java.util.Scanner;

public class Ex04_OverlapIf {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("점수입력 : "); //엔터없이 문구 출력
		
		int score = scan.nextInt(); //점수를 정수로 입력받는 변수
		
		if(score >= 0 && score <= 100) { //점수가 0~100사이면
			if(score >= 80) { //점수가 80점이상이면
				System.out.println("합격"); //합격 출력
			}else { //그렇지 않으면
				System.out.println("불합격"); //불합격 출력
			}
		}else { //점수가 0~100사이가 아니라면
			System.out.println("0~100사이 정수로 입력하시오."); //문구 출력
		}
		
		scan.close(); //스캐너 종료
	}
}

 

- 코드에 대한 설명은 주석으로 작성했습니다. 

- 논리연산자 배울 때 사이값은 논리곱 연산자(&&)를 쓴다고 했었죠?

- 그래서 0~100 사이값을 구할 때 &&로 조건을 작성합니다. 

- 논리연산자가 잘 기억이 안나는 분은 아래 주소에 가서 보고 오세요.

https://ossam5.tistory.com/627

 

[JAVA강좌] 12강 관계연산자와 논리연산자

- 이번에 사용하는 연산자는 boolean과 관련된 연산자들입니다. - boolean은 결과값이 true 혹은 false를 담는 자료형입니다. - 이번 강좌에는 true 혹은 false로 처리가 가능한 관계연산자와 논리연산자를

ossam5.tistory.com

 

 

 

## 중첩 if문 결과1 - Ex04_IfElseIf.java

- 이번에는 120을 작성하니 0~100 사이 정수로 입력하라고 나오죠?

- 90 쓰면 합격, 50 쓰면 불합격은 여전히 잘 처리가 됩니다. 

 

 

 

 

 

 

 

 

- 그럼 위에 배운 내용을 모두 조합해서 문제를 낼 테니 풀어보고 접은 글을 열어 주세요.

사용자에게 국어, 영어, 수학 점수를 모두 입력받아
평균이 90점이상이면 [수], 80점이상이면 [우],
70점이상이면 [미], 60점이상이면 [양],
60점미만이면 [가]를 출력하시오.
단, 국어, 영어, 수학은 모두 0~100사이정수만 입력받고, 
그렇지 않은 경우 [점수는 0~100사이로만 입력하세요.]가 출력되게 하시오.

 

 

더보기

## 문제 실습1 - Ex05_Question.java

package ch11_condition;

import java.util.Scanner;

public class Ex05_Question {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("국어점수입력(0~100) : "); //엔터없이 문구 출력
		int kor = scan.nextInt(); //국어점수를 받는 변수
		
		System.out.print("영어점수입력(0~100) : "); //엔터없이 문구 출력
		int eng = scan.nextInt(); //영어점수를 받는 변수
		
		System.out.print("수학점수입력(0~100) : "); //엔터없이 문구 출력
		int math = scan.nextInt(); //수학점수를 받는 변수
		
		//평균을 담는 변수
		double avg = (kor + eng + math) / (double)3; //실수로 타입변환
		
		//첫번째 조건문 - 점수들이 0~100사이인지 확인
		if((kor >= 0 && kor <= 100) && (eng >= 0 && eng <= 100) && (math >= 0 && math <= 100)) {
			if(avg >= 90) { //평균이 90점이상이면
				System.out.println("수"); //수 출력
			}else if(avg >= 80) { //평균이 80점이상이면
				System.out.println("우"); //우 출력
			}else if(avg >= 70) { //평균이 70점이상이면
				System.out.println("미"); //미 출력
			}else if(avg >= 60) { //평균이 60점이상이면
				System.out.println("양"); //양 출력
			}else {
				System.out.println("가"); //가 출력
			}
		}else { //0~100사이가 아니라면
			System.out.println("점수는 0~100사이로만 입력하세요.");
		}

		scan.close(); //스캐너 종료
	}

}

 

- 코드에 정답은 없습니다. 결과가 잘 나오면 됩니다.

- 하지만 많이 작성하는 것보다 코드 줄 수를 가장 줄여서 쓰는 연습을 하는 것이 좋습니다. 

 

## 문제 결과1 - Ex05_Question.java

 - 결과가 잘 나옵니다. 다른 점수들도 잘 입력해 보세요.

 

- 이번에는 국어점수만 일부러 120점을 입력했습니다. 

- 그럼 점수를 0~100 사이로만 입력하라고 나옵니다.

 

 

 

 

 

 

 

 

728x90
반응형