Contents
접기
+ 다양한 역할을 하는 연산
연산자 | 역할 | 예시 |
+ | 단항 = 부호 유지 이항 = 덧셈 문자열 = 결합 |
10 + " " = "10" "내 나이" + 25 = "내 나이25 " "12"+"13" = "1213" 10-20+"30" == "1030" x+y -10 = "1213"-10 // 오류 |
- | 단항 = 부호 변경 이항 = 뺄셈 |
- |
++ / -- | 변수의 값을 1 증가/ 1 감소 | (예시 : + 의 경우) ++x = 우선순위 : 2순위 x ++ = 우선순위 : 최하위 |
증감연산자 예시 문제
문제 | 정답 | 문제 | 정답 |
int x = 1; int y = 0; y = ++x; |
x = 2, y = 2 | int x = 1; int y = 0; y = x++; |
x = 2, y = 1 |
y > ++x; | 증가 후 비교 | y > x++; | 비교 후 증가 |
특징
- if문과 유사하지만 그 결과가 일치할때 사용할 수 있다.
- switch문의 괄호 안에는 정수형과 문자열만 가능하다.
#1 전통적인 swich 문
public class SwitchTest01 {
public static void main(String[] args) {
int score = 100;
String clz = ""; // 데이터를 무언가(주소값) 참조하고 있다 // = String s2 = new String();
// null :아무것도 참조하고 있지 않다.
switch (score / 10) {
// 100 점은 F가 된다. 옆에 코드를 없애 case 9의 코드를 공유하게 된다.
case 10: case 9: clz = "A학점"; break;
// break : 스위치 { } 밖으로 빠져 나감
case 8: clz = "B학점"; break;
case 7: clz = "C학점"; break;
case 6: clz = "D학점"; break;
default : clz = "F학점";
}
System.out.println(clz);
}
}
코드 | 특징 |
case 10: case 9: clz = "A학점"; break; | case 9: clz = "A학점"; break; 이렇게만 case문이 존재한다면 100 점은 F가 된다. case 10: 의 코드를 없애 case 9: 의 코드를 공유하여 사용해서 100점도 'A학점'을 받게 하는 것이다. |
# 2 여러가지 경우의 수 + break 유무 체크
만약 전부 대문자인 경우도 넣고 싶다면 case 를 추가하는 것이 아닌 전부 소문자로 만들어 한 경우만을 체크.
public class SwitchTest02 {
public static void main(String[] args) {
String family = "Father";
switch (family) {
case "father" : case "Father" : System.out.println("아버지");break;
case "Mother" : System.out.println("어머니");break;
case "Brother" : System.out.println("남자형제");break;
case "Sister" : System.out.println("여자형제");break;
default : System.out.println("Who?");
}
int value = 0;
String result = "";
switch(value) {
case 0 : result += "*";
case 1 : result += "^";
case 2 : result += "^";
case 3 : result += "*";
}
System.out.println(result); // 문자열에 + 니까 *^^* 전부 결합됨
}
}
# 3 lambda 와 yield
switch 연산 (자바 12버전에서 추가됨)
lambda 연산자와 함께 사용할 때에는 break가 필요없다.
switch문을 연산식으로 사용할 때에는 문장 끝에 세미콜론(;)을 삽입해야한다.
1) lambda 연산식(->) 사용
public class SwitchTest03 {
public static void main(String[] args) {
String yoil = "월";
switch(yoil) {
case "월", "수","금" -> System.out.println("요가");
case "화", "목","토" -> System.out.println("수영");
default -> System.out.println("달리기");
}
요가
2) 연산식으로 사용
String result = switch(yoil) {
case "월", "수","금" -> "요가"; // 값만 지정
case "화", "목","토" -> "수영";
default -> "달리기";
};
System.out.println(yoil + "요일 운동: " + result);
월요일 운동: 요가
3) yield 문 사용
yield 는 switch 식의 변수에 대입할 값이 있을 때 치환하는데 사용한다.
double calories = 0;
calories = switch(yoil) {
case "월", "수","금" :
System.out.println(yoil + "요일 운동: 에어로빅");
yield 664.5;
case "화", "목","토" :
System.out.println(yoil + "요일 운동: 수영");
yield 528;
default :
System.out.println(yoil + "요일 운동: 없음");
yield 1200;
};
System.out.println("소비칼로리"+ calories + "kcal");
}
}
월요일 운동: 에어로빅
소비칼로리664.5kcal
[문제] 두 개의 정수값을 입력받고, 연산 종류를 입력 받아 결과를 출력
<실행 예시>
두개의 정수 입력: 10 20
1. 덧셈
2. 뺄셈
3. 곱셈
4. 나눗셈
------------
선택 : 2
결과 : -10
기본 상태
import java.util.Scanner;
public class Exam12 {
public static void main(String[] args) {
int num1, num2;
Scanner scanner = new Scanner(System.in);
System.out.print("두 개의 정수 입력: ");
num1 = scanner.nextInt();
num2 = scanner.nextInt();
System.out.println("\n1. 덧셈");
System.out.println("2. 뺄셈");
System.out.println("3. 곱셈");
System.out.println("4. 나눗셈");
System.out.println("------------");
System.out.print("선택: ");
#1 lambda
scanner.next(); : 문자열 입력받는 방법이다.
result 값이 초기화되지 않은 경우가 생길 수 있다.
때문에 처음에 선언 + 초기화를 함께하면 된다.
String choice;
double result=0;
choice = scanner.next(); //문자열 입력
switch(choice) {
case "1" -> result = num1 + num2;
case "2" -> result = num1 - num2;
case "3" -> result = num1 * num2;
case "4" -> result = num1 / (double)num2;
default -> {
System.out.println("키 입력이 잘못 되었습니다.");
System.exit(0);
// result 값이 초기화되지 않은 경우가 생길 수 있다. 때문에 처음에 선언 + 초기화를 함께하면 됨
}
}
System.out.println("결과: "+ result);
#2 연산
default 없으면 오류 (반드시 필요!)
int choice;
double result;
choice = scanner.nextInt();
result = switch(choice) {
case 1 -> num1 + num2;
case 2 -> num1 - num2;
case 3 -> num1 * num2;
case 4 -> num1 / (double)num2;
default -> 0; // 없으면 오류
};
System.out.println("결과: "+ result);
#3 yield
case 2 와 같은 값을 갖는 경우 오류인지 결과물인지 알 수 없음.
String choice;
choice = scanner.next();
String result;
result = switch(choice) {
case "1" -> ((num1 + num2) + "");
case "2" -> ((num1 - num2) + "");
case "3" -> ((num1 * num2) + "");
case "4" -> ((num1 / (double)num2) + "");
default -> "오류"; // 없으면 오류
};
System.out.println("결과: "+ result);
오류 임을 알려주려면?
>> 결과 값을 String으로 받아온다.
'국비 교육 > 백엔드(Java, Spring)' 카테고리의 다른 글
[자바] 입력 버퍼 (Buffer) (0) | 2024.01.18 |
---|---|
[자바] 반복문 -1 (While) (0) | 2024.01.17 |
[자바] 키보드로부터 입력 (0) | 2024.01.16 |
[자바] 자바 기초 -2 (0) | 2024.01.16 |