본문 바로가기

컴퓨터언어/JAVA(자바)

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

728x90
반응형

 

 

 

 

- 삼항연산자는 항이 3개인 연산자입니다.

- 앞에서 배웠던 연산자와는 다르게 조건문으로 보는 것이 좋습니다.

- 이번 강좌에서는 true / false 결과에 따라 다른 결과를 주는 삼항연산자를 보도록 하겠습니다. 

 

 

 

 

 

1. 삼항연산자


- 삼항연산자는 주어진 조건식이 참인 경우의 코드와 거짓인 코드를 나눠서 조건식에 따라 다른 결과를 줍니다.

조건식?참코드:거짓코드;

 

- 문법은 위와 같은데 식(항)이 3개여서 삼항연산자입니다. 

- 매번 변수 값을 고정해서 결과를 봤었기 때문에 변수 값을 사용자에게 입력받는 것을 간단하게 배우고 삼항연산자를 보겠습니다. 

 

 

 

1) Scanner 클래스

- Scanner 클래스는 사용자가 값을 입력하면 받아서 처리하는 클래스입니다.

- 자바가 내장하고 있는 클래스로, 우린 아직 클래스를 배우지 않았기 때문에 간단하게 사용법만 보겠습니다. 

 

## Scanner 문법

Scanner scan = new Scanner(System.in);

- 위 코드를 입력하거나, 그냥 제 블로그에서 퍼가도 됩니다.

- 대신 내장클래스여서 에러가 뜨는데 에러가 뜨는 곳에서 [Ctrl]+[Shift]+[O]를 통해 Scanner 클래스를 import해옵니다. 

 

- 실습을 통해서 Scanner를 불러와보겠습니다. 

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

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

https://ossam5.tistory.com/613

 

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

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

ossam5.tistory.com

 

 

 

## 스캐너 실습1 - Ex09_Scanner.java

package ch10_operator;

public class Ex09_Scanner {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	}

}

- 위와 같이 입력하면 에러가 납니다.

 

 

## 스캐너 결과1 - Ex09_Scanner.java

- 이렇게 에러가 뜨기 때문에 빨간 줄로 처리된 부분 둘 중 하나에 커서를 놓습니다. 

- [Ctrl]+[Shift]+[O]를 누르면 상단에 import 코드가 처리가 됩니다. 

- 이건 이클립스 기능이니, 인텔리제이를 쓰시는 분은 따로 찾아보세요.

 

 

 

## 스캐너 실습2 - Ex09_Scanner.java

package ch10_operator;

import java.util.Scanner;

public class Ex09_Scanner {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	}

}

 

 

## 스캐너 결과2 - Ex09_Scanner.java

- 그럼 에러는 사라지고 경고만 남습니다. 

- 경고는 그냥 둬도 되겠지만 스캐너 사용을 그만하겠다는 코드를 쓰면 사라집니다. 

 

 

 

## 스캐너 실습3 - Ex09_Scanner.java

package ch10_operator;

import java.util.Scanner;

public class Ex09_Scanner {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		scan.close();
	}

}

 

- 마지막에 [ scan.close(); ]라고 처리했습니다.

- 스캐너를 종료한다는 뜻입니다. 가장 마지막에 작성하는 것이 좋습니다.

 

 

## 스캐너 실습3 - Ex09_Scanner.java

- 그럼 에러도 경고도 모두 사라지는 것을 확인할 수 있습니다. 

- 그러고 나면 사용자가 입력한 값을 변수에 담아보겠습니다. 

 

 

## 스캐너 실습4 - Ex09_Scanner.java

package ch10_operator;

import java.util.Scanner;

public class Ex09_Scanner {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //스캐너 시작
		
		System.out.print("정수입력 : "); //문구출력 - 엔터처리 없음
		int num = scan.nextInt(); //사용자가 입력한 정수를 담는 변수
		
		System.out.println("입력한 값 : " + num); //문구출력 - 엔터처리됨
		
		scan.close(); //스캐너 종료
	}

}

- 해당 코드에 대한 설명은 주석을 달았습니다. 

- 앞으로 자주 사용할 코드니 확인을 잘해주세요.

- [ System.out.print(); ]는 출력 시 엔터처리를 안합니다. 

- [ System.out.println(); ]는 출력시 엔터처리를 합니다. 

- num이라는 변수에 사용자가 입력한 정수를 담았습니다.

- 스캐너에 입력한 값을 타입별로 받을 수 있습니다. 

  • scan.nextInt() : 정수를 입력받음, 다른 것 입력하면 에러 뜸
  • scan.nextDouble() : 실수를 입력받음
  • scan.next() : 문자열을 입력받음, 중간에 공백이 있으면 공백 전까지만 반환
  • scan.nextLine() : 문자열을 입력받음, 중간에 공백이 있어도 이어서 모든 문자열을 반환

- 앞으로도 자주 나와 설명할 테니 이런 것이 있다고 보고 넘어가세요.

 

 

 

## 스캐너 결과4 - Ex09_Scanner.java - 에러 없음

- [Ctrl]+[F11]을 누르면 콘솔창이 실행이 됩니다.

- 녹색으로 쓰여있는 것은 먼저 나오지 않습니다. 

- 직접 마우스로 커서를 : 뒤로 옮긴 후 20을 적고 엔터를 칩니다.

- 그럼 아래에 입력한 값 : 20이라고 나오는 것을 확인할 수 있습니다. 

 

 

## 스캐너 결과4 - Ex09_Scanner.java - 에러 있음

- : 뒤에 테스트라고 입력했습니다.

- 정수만 입력해야 하는데 문자열을 입력했기 때문에 에러(예외처리)가 발생되었습니다. 

- 그래서 타입을 잘 지정해줘야 합니다. 

 

 

 

 

 


 

 

 

 

2) 삼항연산자 처리

- 그럼 점수가 80점이상이면 합격, 그렇지 않으면 불합격을 반환하는 코드를 작성해 보겠습니다. 

 

## 삼항연산자 실습1 - Ex10_ConditionalOperator1.java

package ch10_operator;

import java.util.Scanner;

public class Ex10_ConditionalOperator1 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //스캐너 시작
		
		System.out.print("점수입력 : "); //문구출력 - 엔터처리 없음
		int score = scan.nextInt(); //사용자가 입력한 점수를 담는 변수
		String result = ""; //결과인 합격, 불합격을 받을 변수
		
		//삼항연산자
		result = (score >= 80) ? "합격" : "불합격"; //result에 합격인지 불합격인지 처리
		
		System.out.println(result); //result출력
		
		scan.close(); //스캐너 종료
	}
}

 

- 스캐너와 삼항연산자를 이용해서 입력한 점수에 따라 합격, 불합격을 처리하는 구문을 작성했습니다. 

- 코드에 대한 설명은 주석으로 처리했으니 읽어 주시길 바랍니다. 

 

 

## 삼항연산자 결과1 - Ex10_ConditionalOperator1.java - 합격인 경우

- [Ctrl]+[F11]을 누르면 콘솔창이 실행이 됩니다.

- 녹색으로 쓰여있는 것은 먼저 나오지 않습니다. 

- 직접 마우스로 커서를 : 뒤로 옮긴 후 90을 적고 엔터를 칩니다.

- 그럼 아래 줄에 합격이라고 나오는 것을 볼 수 있습니다. 

 

 

## 삼항연산자 결과2 - Ex10_ConditionalOperator1.java - 불합격인 경우

- [Ctrl]+[F11]을 누르면 콘솔창이 실행이 됩니다.

- 녹색으로 쓰여있는 것은 먼저 나오지 않습니다. 

- 직접 마우스로 커서를 : 뒤로 옮긴 후 50을 적고 엔터를 칩니다.

- 그럼 아래 줄에 불합격이라고 나오는 것을 볼 수 있습니다. 

- 이렇게 점수입력을 어떻게 했냐에 따라 결과를 다르게 처리할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

2. 논리연산자를 이용한 삼항연산자


- 지난 강좌에 논리연산자를 배웠습니다. 

- 논리연산자를 어떻게 응용하는지 공부하면 더 습득이 잘 될 겁니다. 

- 혹시 논리연산자를 잘 모르는 분은 아래 게시글을 참고해 주세요.

https://ossam5.tistory.com/627

 

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

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

ossam5.tistory.com

 

 

 

 

 

1) 논리곱연산자(&&) 응용

- 그럼 지난 강좌에서 했던 내용을 응용해서 해보겠습니다. 

- 사용자에게 엑셀과 액세스 점수를 각각 입력받아 모두 70점 이상이면 합격, 그렇지 않으면 불합격을 반환하는 프로그램을 만들어 보겠습니다. 

- 실제 컴퓨터활용능력시험 1급의 실기 시험이 이렇죠?

- 아래 코드를 보기 전에 혼자 해보면 좋은 공부가 될 겁니다. 

 

 

## 논리곱삼항연산자 실습1 - Ex10_ConditionalOperator2.java

package ch10_operator;

import java.util.Scanner; //Scanner 클래스 불러오기

public class Ex10_ConditionalOperator2 {

	public static void main(String[] args) {
		//사용자에게 엑셀과 액세스 점수를 각각 입력받아 모두 70점이상이면 합격, 그렇지 않으면 불합격을 반환
		
		Scanner scan = new Scanner(System.in); //스캐너 시작
		
		System.out.print("엑셀점수입력(0~100) : "); //문구출력
		int excel = scan.nextInt(); //엑셀점수를 받는 변수
		
		System.out.print("액세스점수입력(0~100) : "); //문구출력
		int access = scan.nextInt(); //액세스점수를 받는 변수
		
		String result = ""; //결과를 담을 변수
		
		result = ((excel >= 70) && (access >= 70)) ? "합격" : "불합격"; 
		
		System.out.println("합격여부 : " + result); //결과 출력

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

}

 

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

- 여기서 중요한 점은 점수를 excel과 access변수에 각각 입력받는다는 점입니다.

- 그리고 삼항연산자에 &&를 통해 논리곱연산자를 처리한다는 것입니다. 

- 삼항연산자의 조건부분만 보겠습니다. 

- [ ((excel >= 70) && (access >= 70)) ]를 좀 많이 써지만 괄호를 쓰면 구분이 더 잘되므로 작성하면 좋습니다. 

- &&를 통해서 엑셀점수도 70점 이상 access점수도 70점 이상이면, 합격을 그렇지 않으면 불합격을 반환합니다. 

 

 

 

## 논리곱삼항연산자 결과1 - Ex10_ConditionalOperator2.java - 합격인 경우

- [Ctrl]+[F11]을 누르면 콘솔창이 실행이 됩니다.

- 엑셀 관련 : 뒤에 90이라고 입력하고 엔터 칩니다. 

- 액세스관련 : 뒤에 80이라고 입력하고 엔터 칩니다. 

- 그럼 아래 줄에 합격이라고 나오는 것을 볼 수 있습니다. 

- 둘 다 70점 이상이라 이런 결과를 받을 수 있습니다. 

 

 

## 논리곱삼항연산자 결과1 - Ex10_ConditionalOperator2.java - 불합격인 경우

- 이번에는 액세스 점수를 50으로 처리했습니다.

- 하나라도 틀리면 &&는 false로 처리가 되기 때문에 불합격이 반환됩니다. 

- 이렇게 점수입력을 어떻게 했냐에 따라 결과를 다르게 처리할 수 있습니다. 

 

 

 

 


 

 

 

 

2) 논리합연산자(||) 응용

- 그럼 지난 강좌에서 했던 내용을 응용해서 해보겠습니다. 

- 사용자에게 주민번호 뒷자리 첫 글자를 반환받아 1 혹은 3이면 남자를 반환하고, 2 혹은 4이면 여자를 반환하고, 나머지는 잘못입력했다는 프로그램을 만들어 보겠습니다. 

- 아래 코드를 보기 전에 혼자 해보면 좋은 공부가 될 겁니다. 

 

 

## 논리합삼항연산자 실습1 - Ex10_ConditionalOperator3.java

package ch10_operator;

import java.util.Scanner;

public class Ex10_ConditionalOperator3 {

	public static void main(String[] args) {
		//사용자에게 주민번호 뒷자리 첫글자를 반환받아 1 혹은 3이면 남자를 반환하고, 2 혹은 4이면 여자를 반환하고, 나머지는 잘못입력했다는 프로그램
		
		Scanner scan = new Scanner(System.in); //스캐너 시작
		
		System.out.print("주민번호 뒷자리 첫글자입력(1~4) : "); //문구출력
		int first = scan.nextInt(); //첫글자를 담는 변수
		
		String result = ""; //결과를 담을 변수
		
		result = ((first == 1) || (first == 3)) ? "남자" : (((first == 2) || (first == 4)) ? "여자" : "잘못입력했습니다."); 
		
		System.out.println("성별여부 : " + result); //결과 출력

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

 

- 코드 설명은 주석으로 달았습니다.

- 삼항연산자 쓴 부분이 좀 어려울 수 있습니다. 

- [ 조건식1? "남자" : (조건식2? "여자":"잘못입력"); ] 이렇게 false의 경우를 다시 나눠서 삼항연산자를 중첩해서 썼습니다. 

- 코드는 복잡하지만 잘 이해하면 좋습니다. 

- 추후 if문으로 사용하는 분들도 있지만, 개발자에 따라 이렇게 삼항연산자를 즐겨 쓰는 분들도 있습니다.

- 다른 사람 코드를 볼 때 이해하려면 이렇게 사용하는 것도 알면 좋습니다. 

 

 

 

## 논리합삼항연산자 결과1 - Ex10_ConditionalOperator3.java

- 이번의 결과는 1~5까지 모두 각각 작성해서 보겠습니다. 

- 조건식대로 결과가 잘 나오는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

728x90
반응형