티스토리 뷰
지난 포스팅에서 조건문에 대해 알아보았다.
사실 이번 포스팅에서 배울 내용이 자주 쓰이지 않을뿐더러 이전 포스팅에서 언급한 if문으로 완벽히 대체 가능하기
때문에 넘어갈까 했지만 그래도 꼼꼼하게 포스팅을 하기 위해서 번외 편을 준비해봤다! 🎅
switch
가령 여러 스위치가 있다고 해보자. 각 스위치에는 구분할 수 있도록 1부터 라벨링이 되어있고,
해당 스위치를 켜면 해당 스위치에 연결된 회로를 따라서 전류가 흐를 것이고 특정한 event가 발생할 것이다.
이와 같은 메커니즘을 가진 것이 switch문이다. 이름에서 직관적인 느낌이 오는 것처럼 지금 번뜩 떠오른 그것이 맞다.
자세한 내용은 아래 예시를 통해서 살펴보자.
public class Switch {
public static void main(String[] args) {
switch ('a'){
case 'a':
System.out.println('A');
break;
case 'b':
System.out.println('B');
break;
case 'c':
System.out.println('C');
break;
case 3 :
System.out.println(1);
break;
}
}
}
우선 switch라는 keyword뒤에 특정 값이 온다. 이 특정 값이라는 것은 문자가 될 수도, 숫자가 될 수도 있다.
그리고 그 뒤에 중괄호로 딸려오는 로직이 앞전에 비유했던 전기 회로도라고 생각하면 되겠다.
즉, switch 뒤의 값에 따라서 해당 값과 동일한 case에 해당하는 로직이 수행되는 것이다.
따라서 위 예시에서는 'a'에 해당하는 문자 'A'가 출력될 것이다.
각 case의 뒤에 break라는 keyword는 말 그대로 break의 역할을 한다.
만약 break가 없다면 해당 로직 이하 모든 로직이 수행된다.
즉, 위의 경우에서 break가 없다면 A, B, C, 1이 모두 출력된다.
한편, 여기서 만약 case에 없는 값이 들어온다면 error가 날 것이다. 이때 사용하는 것이 default구문이다.
아래 예제로 살펴보자.
import java.util.Scanner;
public class Switch {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int Score = input.nextInt();
switch (Score){
case 100:
System.out.println("A+");
break;
case 90:
System.out.println("A");
break;
case 80:
System.out.println("B+");
break;
case 70:
System.out.println("B");
break;
default:
System.out.println("F");
}
}
}
이번에는 그냥 조금 더 응용해서 입력값을 Switch문에 넣도록 했다.
그래서 만약 입력값으로 들어오는 값 중에 100, 90, 80, 70이 아닌 모든 값들은 default구문으로 빠져 'F'를 출력하게 된다.
예제가 너무 잔인하긴 하지만, 이해가 됐을 거라 믿어 의심치 않는다...🙄
논리 연산자
마지막으로 논리 연산자에 대해서 알아보자.
사실 논리 연산자를 따로 포스팅에서 다루어야 맞지만, 내용이 너무 적을 것 같아서.... 간단하게 이번 포스팅에
묶어서 하려고 한다! 그럼 시작해보자..!
사실 if문을 사용한다는 것은 조건문을 어떻게 짜느냐가 관건이다. 그래서 전 포스팅에서 살펴본 것처럼 짝수인지
혹은 홀수인지 조건을 건다거나, 특정 문자열과 동일한 문자열인지 조건을 걸었던 것을 기억할 것이다.
하지만, 만약 조건을 한번에 여러 개를 묶어서 걸어야 한다면 어떻게 해야 할까?
이럴 때 사용하는 것이 논리 연산자이다.
먼저 우리가 지난 시간에 살펴봤던 중첩 조건문을 다시 가져와 보자.
public class Conditional {
public static void main(String[] args) {
String ID = "Chany";
String PW = "ChanChany";
if(ID.equals("Chany")){
if(PW.equals("ChanChany")){
System.out.println("Authorized User");
}
} else {
System.out.println("Please enter a valid account");
}
}
}
물론 크게 무리가 없어 보이지만 조건문이 중첩된 것이 영 보기 좋지 않다.
위의 경우에서는 ID가 "Chany" 그리고 PW가 "ChanChany"여야만 허가된 유저라고 출력을 하게 된다.
이런 경우에는 && 논리 연산자를 사용하여 각각의 조건을 한 번에 묶어버릴 수 있다. &&는 "그리고"를 뜻한다.
public class Conditional {
public static void main(String[] args) {
String ID = "Chany";
String PW = "ChanChany";
if(ID.equals("Chany") && PW.equals("ChanChany")){
System.out.println("Authorized User");
} else {
System.out.println("Please enter a valid account");
}
}
}
조금 더 조건문이 깔끔해진 것이 보기 좋다.
이번에는 만약 허가된 유저가 "Chany"외에 예를 들어 "yeol2"가 있다고 해보자. 그렇다면 우리는 ID에
"Chany" 또는 "yeol2"가 있는지 확인해야 한다. 마찬가지로 이런 경우에는 || 연산자를 사용한다.
|| 는 "또는"을 뜻한다.
public class Conditional {
public static void main(String[] args) {
String ID = "yeol2";
String PW = "ChanChany";
if((ID.equals("Chany") || ID.equals("yeol2")) && PW.equals("ChanChany")){
System.out.println("Authorized User");
} else {
System.out.println("Please enter a valid account");
}
}
}
설명을 위해서 위와 같이 예제를 작성했지만 논리 연산자를 중구난방 사용하면 그것도 좋지 않다.
어떻게 사용되는지 그것만 캐치하고 넘어가자.
마지막으로는 not의 의미를 가지고 있는 ! 연산자가 있다. ! 연산자는 True는 False로, 반대로 False는 True로 Boolean의
값을 역전시킬 때 사용한다.
간단하게 아래 예제를 살펴보고 이번 포스팅을 마무리하려고 한다.
public class Conditional2 {
public static void main(String[] args) {
String ID = "yeol2";
if(!ID.equals("Chany")){
System.out.println("Please enter a Correct ID");
} else {
System.out.println("Correct ID");
}
}
}
ID 값에 "Chany"가 들어있지 않은 경우는 항상 올바른 ID를 입력하라는 문구가 출력될 것이다.
이것으로 조건문에서 필요한 모든 내용을 학습했다. 이제 다음 포스팅에서는 조건문 보다도 더더 더욱더더더 중요한
반복문에 대해서 포스팅을 하겠다!
포스팅의 모든 학습 내용은 생활코딩의 Java 입문 수업의 출처임을 밝힙니다.
'프로그래밍 > Java 기초' 카테고리의 다른 글
Java(10), 배열 (0) | 2020.04.10 |
---|---|
Java(9), 반복문 (0) | 2020.04.07 |
Java(8), 조건문 (0) | 2020.04.03 |
Java (7), 연산자 (0) | 2020.03.31 |
Java (6), 형 변환 (0) | 2020.03.31 |