- 삼항연산자는 항이 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을 적고 엔터를 칩니다.
- 그럼 아래 줄에 불합격이라고 나오는 것을 볼 수 있습니다.
- 이렇게 점수입력을 어떻게 했냐에 따라 결과를 다르게 처리할 수 있습니다.
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까지 모두 각각 작성해서 보겠습니다.
- 조건식대로 결과가 잘 나오는 것을 확인할 수 있습니다.
'컴퓨터언어 > JAVA(자바)' 카테고리의 다른 글
[JAVA강좌] 15강 조건문 if문 (0) | 2024.01.11 |
---|---|
[JAVA강좌] 14강 비트연산자와 연산자우선순위 (0) | 2024.01.11 |
[JAVA강좌] 12강 관계연산자와 논리연산자 (0) | 2024.01.10 |
[JAVA강좌] 11강 복합대입연산자와 증감연산자 (0) | 2024.01.10 |
[JAVA강좌] 10강 연산자 개념과 산술연산자 (0) | 2024.01.05 |