public static void main(String[] args) {
int score = 93;
if(score>=90) {
System.out.println("점수가 90점보다 큽니다.");
System.out.println("등급은 A입니다.");
}
if(score<90)
System.out.println("점수가 90점보다 니다.");
public static void main(String[] args) {
int score = 93;
if(score>=90) {
System.out.println("점수가 90점보다 큽니다."); // true
System.out.println("등급은 A입니다."); // true
}
// 여기 if문에는 { }중괄호 블록이 없다. 그래서 이 줄만 출력하도록 적용됐으나, false 이므로 출력되지 않음
if(score<90)
System.out.println("점수가 90점보다 작습니다."); // 이 줄까지만 if 문으로 간주
// if문에 속하지 않는 줄이므로, true/false 와 무관하게 출력됨
System.out.println("등급은 B입니다.");
}
/* 실행결과
점수가 90점보다 큽니다.
등급은 A입니다.
등급은 B입니다. */
if(조건식) 명령문;
if(조건식) 명령문;
이렇게 { } 가 생략될 수 있다public static void main(String[] args) {
int score = 85;
if(score>=90) {
System.out.println("점수가 90점보다 큽니다.");
System.out.println("등급은 A입니다.");
} else { // false 이므로, 출력
System.out.println("점수가 90점보다 작습니다.");
System.out.println("등급은 B입니다.");
}
/* 실행결과
점수가 90점보다 작습니다
등급은 B입니다. */
public static void main(String[] args) {
int score = 75;
if(score>=90) { // false
System.out.println("점수가 100~90입니다.");
System.out.println("등급은 A입니다.");
} else if(score>=80) { // false
System.out.println("점수가 80~89입니다.");
System.out.println("등급은 B입니다.");
} else if(score>=70) { // true 이므로, 출력
System.out.println("점수가 70~79입니다.");
System.out.println("등급은 C입니다.");
} else { // false
System.out.println("점수가 70 미만입니다.");
System.out.println("등급은 D입니다.");
}
}
/* 실행결과
점수가 70~79입니다.
등급은 C입니다. */
첫 번째 if : 조건식1 의 결과가 참일 때 실행
두 번째 else if : 조건식2 의 결과가 참일 때 실행
세 번째 else if : 조건식3 의 결과가 참일 때 실행
...
마지막 else : 위의 어느 조건식에도 만족하지 않을 때 실행
else if 는 여러번 사용될 수 있다
모든 조건식이 false 일 경우, else블록 실행하고 if문 벗어남
마지막 else 블럭은 생략이 가능
public static void main(String[] args) {
int num = (int) (Math.random() * 6) + 1;
if(num==1) {
System.out.println("1번이 나왔습니다.");
} else if(num==2) {
System.out.println("2번이 나왔습니다.");
.
.
.
} else {
System.out.println("6번이 나왔습니다.");
}
}
잘못된 사용
boolean hasCard = true;
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
}else {
if (hasCard) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
}
/* 출력 결과
택시를 타고 가라
*/
올바른 사용
boolean hasCard = true;
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
}else if(hasCard) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
/* 출력 결과
택시를 타고 가라
*/
else if는 이전 조건문이 거짓일 때 수행된다.
else if는 개수에 제한 없이 사용할 수 있다.
if (조건식1) {
조건식1의 결과가 참일 때 실행하고자 하는 문장;
if (조건식2) {
조건식1 과 조건식 2의 결과가 모두 참일 때 실행하고자 하는 문장;
} else {
조건식1의 결과가 참이고, 조건식2의 결과가 거짓일 때 실행하고자 하는 문장;
}
} else {
조건식1의 결과가 거짓일 때 실행하고자 하는 문장;
}
class Control1_4 {
public static void main(String[] args) {
int score = 87;
if (score >= 90) {
if(score >= 95){
System.out.println("A++등급입니다.");
}else {
System.out.println("A등급입니다.");
}
} else if(score >= 80) {
if(score >= 85){
System.out.println("B++등급입니다.");
}else {
System.out.println("B등급입니다.");
}
} else if(score >= 70) {
if(score >= 75){
System.out.println("C++등급입니다.");
}else {
System.out.println("C등급입니다.");
}
}else {
System.out.println("D등급입니다.");
}
}
}
import java.util.Objects;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("A 입력 : ");
String aHand = sc.nextLine(); // A 입력
System.out.print("B 입력 : ");
String bHand = sc.nextLine(); // B 입력
if (Objects.equals(aHand, "가위")) { // 값을 비교하는 Obects.equals() 메서드 사용
if (Objects.equals(bHand, "가위")) {
System.out.println("A 와 B 는 비겼습니다."); // A 와 B 의 입력값을 비교해서 결과 출력
} else if (Objects.equals(bHand, "바위")) {
System.out.println("B 가 이겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("A 가 이겼습니다.");
} else {
System.out.println(" B 유저 값을 잘못 입력하셨습니다.");
}
} else if (Objects.equals(aHand, "바위")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("A 가 이겼습니다.");
} else if (Objects.equals(bHand, "바위")) {
System.out.println("A 와 B 는 비겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("B 가 이겼습니다.");
}
} else if (Objects.equals(aHand, "보")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("B 가 이겼습니다.");
} else if (Objects.equals(bHand, "바위")) {
System.out.println("A 가 이겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("A 와 B 는 비겼습니다.");
}
}
}
}
/* 입/출력 예시
A 입력 : 가위
B 입력 : 보
A 가 이겼습니다. */
삼항 연산자를 사용하여 코드의 라인이 줄어들었다고, 컴파일 속도가 빨라지는 것은 아니다.
삼항 연산자를 중복해서 처리할 경우, 가독성이 떨어질 수 있으므로 중복처리는 피하는 것이 좋다.
if문, switch문 비교
if문
switch문
switch (조건식) {
case 값1:
조건식의 결과가 값1과 같을 경우 수행할 문장;
break;
case 값2:
조건식의 결과가 값2와 같을 경우 수행할 문장;
break;
...
default:
조건식의 결과와 일치하는 case 문이 없을 때 수행할 문장;
}
default 문은 생략 가능
break; 를 만나거나 switch 문이 끝나면, switch 문 전체를 빠져나간다.
int num, result;
final int ONE = 1;
switch (result) {
case '1': // OK. 문자 리터럴(정수 49와 동일)
case ONE: // OK. 정수 상수
case "YES": // OK. 문자열 리터럴
case num: // Error. 변수는 불가능
case 1.0: // Error. 실수도 불가능
}
class Control2_1 {
public static void main(String[] args) {
int month = 8;
String monthString = "";
switch (month) {
case 1:
monthString = "January";
break;
case 2:
monthString = "February";
break;
case 3:
monthString = "March";
break;
case 4:
monthString = "April";
break;
case 5:
monthString = "May";
break;
case 6:
monthString = "June";
break;
case 7:
monthString = "July";
break;
case 8:
monthString = "August";
break;
case 9:
monthString = "September";
break;
case 10:
monthString = "October";
break;
case 11:
monthString = "November";
break;
case 12:
monthString = "December";
break;
default:
monthString = "Invalid month";
}
System.out.println(monthString);
}
}
switch 문의 조건식 : 정수 또는 문자열만 가능
case 문의 값
public static void main(String[] args) {
int num = (int) (Math.random() * 6) + 1;
switch(num) { -->
case 1:
System.out.println("1번이 나왔습니다.");
break;
case 2:
System.out.println("2번이 나왔습니다.");
break;
.
.
.
default:
System.out.println("6번이 나왔습니다.");
break;
}
}
경우의 수 多 경우에 switch 문을 사용
→ 변수가 어떤 값을 가지느냐에 따라 실행문이 선택됨
switch(변수)
변수 값과 동일한 값을 갖는 case 실행
변수 값과 동일한 값을 갖는 case가 없다면, default로 가기.
→ default는 생략 가능
public static void main(String[] args) {
int num = (int) (Math.random() * 4) + 8;
System.out.println("[현재 시각: " + time + " 시]");
switch(time) {
case 8:
System.out.println("출근합니다.");
case 9:
System.out.println("회의를 합니다.");
break;
case 10:
System.out.println("업무를 봅니다.");
default:
System.out.println("외근을 나갑니다.");
}
}
/* 실행결과 : time 값이 9일 때
[현재 시각: 9 시]
회의를 합니다.
업무를 봅니다.
외근을 나갑니다. */
System.out.println("어떤 혜택을 원하세요?"); // 무조건 출력되는 부분
char grade = 'C';
switch(grade) {
case 'A': System.out.println("VVIP 혜택을 받으실 수 있습니다.");
case 'B': System.out.println("VIP 혜택을 받으실 수 있습니다."); break;
case 'C': System.out.println("우수 회원 혜택을 받으실 수 있습니다.");
case 'D': System.out.println("일반 회원 혜택을 받으실 수 있습니다."); break;
default : System.out.println("혜택이 없습니다.");
}
System.out.println("감사합니다."); // 무조건 출력되는 부분
/* 실행결과
어떤 혜택을 원하세요?
우수 회원 혜택을 받으실 수 있습니다.
일반 회원 혜택을 받으실 수 있습니다.
감사합니다. */
public static void main(String[] args) {
char grade = 'B';
switch(grade) {
case 'A':
case 'a':
System.out.println("우수 회원입니다.");
break;
.
.
.
}
}
public static void main(String[] args) {
String position = "과장";
switch(position) {
case "부장":
System.out.println("700만원");
break;
.
.
.
}
}
class Main {
public static void main(String[] args) {
switch(month)
case 3:
case 4:
case 5:
System.out.println("봄");
break;
case 6: case 7: case 8:
System.out.println("여름");
break;
...
}
}
조건문의 조건에 변수뿐만 아니라, 연산자를 활용해서 작성하기도 한다.
int money = 2000;
if (money >= 3000) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
/* 출력 결과
걸어가라
*/
int money = 2000;
boolean hasCard = true;
if (money>=3000 || hasCard) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
/* 출력 결과
택시를 타고 가라
*/
|| 는 or 을 뜻한다.
List 에는 contains 메서드를 사용해서, 값을 검색한다.
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
pocket.add("money");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
/* 출력 결과
택시를 타고 가라
*/