JAVA
Chapter03 : Operator
GAWON
2023. 5. 12. 18:19
1.1 연산자와 연산식
- 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(operations)이라고 한다.
- 연산에 사용되는 표시나 기호를 연산자(operator)라고 하고, 연산되는 데이터는
피연산자(operand)라고 한다.
- 연산자는 필요로 하는 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분된다.
1.2 단항, 이항, 삼항 연산자
- 단항 연산자(피연산자 한 개 - 증가/감소 연산자, 논리 부정 연산자)
ex) x++, --y, !x
- 이항 연산자(피연산자 두 개 - 산술, 비교, 논리)
ex) x+y, x==y, x&&y
- 삼항 연산자(피연산자 세 개 - 조건 연산자)
ex) (sum>90) ? x : y
1.3 연산의 방향과 우선순위
- 산술 연산식에서 곱셈(*), 나눗셈(/)이 덧셈(+), 뺄셈(-)보다 먼저 처리 된다.
- 대부분의 연산자(단항, 대입 연산자 제외)는 왼쪽에서 오른쪽으로 > 연산을 시작한다.
ex) 50 * 2 / 4 % 5
- 대입 연산자의 경우 오른쪽에서 왼쪽으로 < 연산을 시작한다.
ex) a = b = c = 5
- 괄호 부분의 연산은 최우선순위를 갖기 떄문에 다른 연산자보다 우선 연산된다.
ex) (a + b) * c
Test01.java
Q. 두 정수를 입력받아 a, b에 저장한 뒤 두 변수의 값을 교환하는 프로그램 구현
* 임시 변수 필요
package org.joonzis.test;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
// Test01.java
// Q. 두 정수를 입력받아 a, b에 저장한 뒤 두 변수의 값을 교환하는 프로그램 구현
// * 임시 변수 필요
Scanner sc = new Scanner(System.in);
System.out.println("첫 번째 숫자 입력 >> ");
int a = sc.nextInt();
System.out.println("두 번째 숫자 입력 >> ");
int b = sc.nextInt();
int tmp = a;
a = b;
b = tmp;
System.out.println("a : " + a + ", b : " + b);
sc.close();
}
}
Test02.java
Q. 나이를 입력받아 "성인" 또는 "미성년자" 출력
package org.joonzis.test;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
// Test02.java
// Q. 나이를 입력받아
// "성인" 또는 "미성년자" 출력
Scanner sc = new Scanner(System.in); // 스캐너 객체 생성
System.out.println("나이 입력 >> ");
int age = sc.nextInt();
String adult = (age >= 20) ? "성인" : "미성년자";
System.out.println(adult);
//System.out.println((age >= 20) ? "성인" : "미성년자");
sc.close(); // 스캐너 객체 소멸
}
}
Test03.java
Q. 매출액과 등급("VIP", "일반")을 입력받아 등급이 "VIP"이면 매출액에서 20%를 할인하고
"일반"이면 매출액에서 5%를 할인하는 프로그램 구현
package org.joonzis.test;
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
// Test03.java
// Q. 매출액과 등급("VIP", "일반")을 입력받아
// 등급이 "VIP"이면 매출액에서 20%를 할인하고
// "일반"이면 매출액에서 5%를 할인하는 프로그램 구현
Scanner sc = new Scanner(System.in);
System.out.println("매출액 입력 >> ");
int money = sc.nextInt();
sc.nextLine(); // nextInt()의 개행 삭제 용도
System.out.println("등급 입력 >> ");
String grade = sc.nextLine();
int totalMoney = grade.equalsIgnoreCase("VIP") ?
(int)(money * 0.8) :
(int)(money * 0.95);
System.out.println("할인 받은 매출액은 : " + totalMoney);
sc.close();
}
}
Test04.java
Q. 성별을 의미하는 정수 값(1,3:남자, 2,4:여자)을 입력받아 "남자", "여자"출력하기
* 1~4 사이의 값으로 입력 받기
* 홀수-남자 짝수-여자
package org.joonzis.test;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
// Test04.java
// Q. 성별을 의미하는 정수 값(1,3:남자, 2,4:여자)을 입력받아
// "남자", "여자"출력하기
// * 홀수-남자 짝수-여자
Scanner sc = new Scanner(System.in);
System.out.println("성별 입력(1~4) >> ");
int num = sc.nextInt();
// 1. 숫자 직접 검증
// String gender = (num==1 || num==3) ? "남자" : "여자";
// System.out.println("성별 : " + gender);
// 2. 홀수 / 짝수
String gender = (num % 2 == 1) ? "남자" : "여자";
System.out.println("성별 : " + gender);
sc.close();
}
}
Test05.java
Q. 하이픈 없이 주민등록번호를 입력받아 (정수, 문자열) "남자","여자" 출력하기
* String의 메소드 이용하기
* ex) charAt(), substring() 등
package org.joonzis.test;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
// Test05.java
// Q. 하이픈 없이 주민등록번호를 입력받아 (정수, 문자열) "남자","여자" 출력하기
Scanner sc = new Scanner(System.in);
System.out.println("주민등록번호 입력 >> ");
String num = sc.next();
// 1. 문자열 자르기 - substring()
String gender = num.substring(6, 7).equals("1") ? "남자" : "여자" ;
// String gender1 = num.substring(6, 7);
// String gender2 = gender1.equals("1") ? "남자" : "여자" ;
// 2. 문자 꺼내기 - charAt()
String gender_ = (num.charAt(6)=='1') ? "남자" : "여자";
System.out.println("성별 : " + gender);
System.out.println("성별 : " + gender_);
}
}
Test06.java
Q. 섭씨 화씨 변환기
섭씨를 입력하면 변환된 화씨, 화씨를 입력하면 변환된 섭씨 출력하기
★화씨 = 섭씨 * 1.8 +32
섭씨 = (화씨 -32) / 1.8
package org.joonzis.test;
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
// Test06.java
// Q. 섭씨 화씨 변환기
// 섭씨를 입력하면 변환된 화씨, 화씨를 입력하면 변환된 섭씨 출력하기
// ★화씨 = 섭씨 * 1.8 +32
// 섭씨 = (화씨 -32) / 1.8
Scanner sc = new Scanner(System.in);
System.out.println("섭씨 입력 >> ");
double inputData = sc.nextDouble();
double outputData = inputData * 1.8 + 32;
System.out.println("변환된 화씨 : " + outputData);
System.out.println("화씨 입력 >> ");
inputData = sc.nextDouble();
outputData = (inputData-32) / 1.8;
System.out.println("변환된 섭씨 : " + outputData);
sc.close();
}
}
Test07.java
Q. 체질량 지수(BMI) = 몸무게(kg) / 키 (m) 제곱
BMI 25 이상이면 "과체중", 20 이상이면 "정상", 20 미만이면 "저체중"
package org.joonzis.test;
import java.util.Scanner;
public class Test07 {
public static void main(String[] args) {
// Test07.java
// Q. 체질량 지수(BMI) = 몸무게(kg) / 키 (m) 제곱
// BMI 25 이상이면 "과체중", 20 이상이면 "정상", 20 미만이면 "저체중"
Scanner sc = new Scanner(System.in);
System.out.print("키 입력(cm) >>");
double height = sc.nextDouble() / 100.0; // 키 (cm -> m)
System.out.print("몸무게 입력(kg) >> ");
double weight = sc.nextDouble();
System.out.println(height); // 키(m) 확인
System.out.println(weight); // 몸무게(kg) 확인
double bmi = weight / (height * height);
String overWeight = (bmi >= 25) ? "과체중" :
(bmi >= 20) ? "정상" : "저체중";
System.out.println("체질량 지수 : " + bmi + ", 체중 범위 : " + overWeight);
}
}