오늘은 산술, 관계, 논리 연산자와 조건문(if, switch)에 대해 알아보겠습니다.
산술 연산자는 쉽게 말해서 사칙 연산 역할을 수행하는 연산자입니다.
+ 는 덧셈, -는 뺄셈, *는 곱셈, /는 나눗셈, %는 나누고 난 뒤의 나머지를 출력합니다.
int a = 20, b = 10;
System.out.printf("%d", a + b); //30 System.out.printf("%d", a - b); //10 System.out.printf("%d", a * b); //200 System.out.printf("%d", a / b); //2 System.out.printf("%d", a % b); //0 |
산술 연산자를 사용한 예시입니다. 각각의 연산자에 맞게 계산이 된 값을 확인하실 수 있습니다.
관계 연산자란 두 값을 비교하여 참, 거짓 의 결과를 내놓는 연산자입니다.
== 연산자는 두 값이 같은지 비교하는 연산자로써 두 값이 같으면 참, 다르면 거짓을 나타냅니다.
!= 연산자는 두 값이 다른지 비교하는 연산자로써 두 값이 다르면 참, 같으면 거짓을 나타냅니다.
>, <, >=, <= 연산자는 수학에서 쓰는 것과 같습니다
차례대로 왼쪽 값이 오른쪽보다 큰지, 왼쪽 값이 오른쪽 보다 작은지,
왼쪽 값이 오른쪽보다 크거나 같은지, 왼쪽 값이 오른쪽보다 작거나 같은지를 비교하는 연산자입니다.
다음은 논리연산자 입니다. 논리연산자란 두 가지 이상의 조건을 표현할 때 사용합니다.
&& 연산자는 왼쪽의 결과와 오른쪽의 결과가 모두 참이면 참을 나타냅니다.
|| 연산자는 왼쪽의 결과와 오른쪽의 결과중 하나만 참일 시에 참을 나타냅니다.
! 연산자는 !뒤에 붙는 식이 참이면 거짓, 거짓이면 참 을 나타냅니다.
int a = 100, b = 200; //두 개의 정수형 변수는 메모리에 할당 받는다.
// '==' : 비교 연산자 // '=' : 대입 연산자 System.out.printf("%d == %d는 %s이다\n", a, b, a == b); //false System.out.printf("%d != %d는 %s이다\n", a, b, a != b); //true System.out.printf("%d == %d는 %s이다\n", a, b, a = b); // 관계 연산자가 아닌 대입 연산자 |
관계 연산자의 예시입니다. 직접 실행해보시면 이해가 빠르실 겁니다.
== 와 = 는 착오가 없으셔야 합니다. ==는 관계 연산자이고, =는 대입 연산자 입니다.
int num = 90;
System.out.printf("AND 연산자 : %s\n", (num >= 100)&&(num <= 200)); //false System.out.printf("OR 연산자 : %s\n", (num >= 100)||(num <= 200)); //true System.out.printf("NOT 연산자 : %s\n", !(num == 100)); //true |
논리 연산자의 예시입니다.
다음으로는 조건문 중에서 if문에 대해서 알아보겠습니다.
조건문은 조건이 참일 때와 거짓일 때를 구분하여 각각 다른 일을 수행하는 구문을 일컫습니다.
if 문의 경우 위의 그림과 같은 형식을 통해서 참일 때와 거짓일 때를 구분하여 실행합니다.
int num1 = 150;
if(num1 < 100) { System.out.printf("참입니다.\n"); System.out.printf("num1이 100보다 작습니다.\n"); } else { System.out.printf("거짓입니다.\n"); } |
if 문의 예시입니다.
num1이라는 정수형 변수를 선언한 뒤에 150의 값으로 초기화 하였습니다.
if 문 부분에서 num1 < 150 이라는 조건을 통해 num1이 100보다 작으면 참일 때 실행문을, 크면 거짓일 때의 실행문을 실행하게 됩니다.
위와 같은 예시에서는 num1 이 100보다 크기 때문에 else문이 실행되겠습니다.
반대로 num1이 100보다 작을 경우에는 if문의 참입니다. num1이 100보다 작습니다. 문이 출력되겠습니다.
다음은 if문과 Scanner를 활용하여 사용자가 입력한 정수가 짝수인지 홀수인지 알아내는 코드를 작성해보겠습니다.
//사용자가 정수를 입력하여 입력한 정수가 짝수인지 홀수인지 알아내는 프로그램
Scanner sc = new Scanner(System.in); //사용자가 키보드로 입력 int num; System.out.printf("정수를 입력해주세요 : "); num = sc.nextInt(); if(num % 2==0) { System.out.printf("입력하신 정수는 짝수입니다.\n"); } else { System.out.printf("입력하신 정수는 홀수입니다.\n"); } |
모든 짝수는 2로 나누었을 때 나머지가 0이 되므로 if문의 조건을 num % 2 == 0 을 조건으로 작성하였습니다.
다음은 중첩 if문입니다.
일반 if문과 다르게 중첩 if문은 이름처럼 if가 중첩된 형태로써 여러개의 조건을 가집니다.
점수별로 등급을 나누어 주는 코드를 전제로 한 중첩 if문 알고리즘입니다.
점수가 90점 이상일 때, 80점 이상일 때, 70점 이상일 때 등 여러개의 조건을 활용합니다.
Scanner sc = new Scanner(System.in);
int score; System.out.printf("점수를 입력해주세요 : "); score = sc.nextInt(); if(score >= 90) { System.out.printf("A 학점입니다."); } else if(score >= 80) { System.out.printf("B 학점입니다."); }else if(score >= 70) { System.out.printf("C 학점입니다."); } else if(score >= 60) { System.out.printf("D 학점입니다."); } else { System.out.printf("F 학점입니다."); } |
입력받은 점수를 점수별로 등급을 나눠주는 코드를 중첩 if문을 활용하여 작성한 예시입니다.
처음 if문 다음에는 else if 를 사용하여 다음 조건을 작성하시면 되겠습니다.
Scanner sc = new Scanner(System.in);
int num1, num2; char ch; System.out.printf("첫 번째 정수를 입력해주세요 : "); num1 = sc.nextInt(); System.out.printf("연산자 (+, -, *, /)를 입력해주세요 : "); ch = sc.next().charAt(0); System.out.printf("두 번째 정수를 입력해주세요 : "); num2 = sc.nextInt(); if(ch == '+') { System.out.printf("%d %c %d = %d", num1, ch, num2, num1 + num2); } else if(ch == '-') { System.out.printf("%d %c %d = %d", num1, ch, num2, num1 - num2); } else if(ch == '*') { System.out.printf("%d %c %d = %d", num1, ch, num2, num1 * num2); } else if(ch == '/') { System.out.printf("%d %c %d = %d", num1, ch, num2, num1 / num2); } |
산술 연산자와 Scanner와 if문을 활용하여 간단한 사칙 연산을 수행하는 계산기 입니다.
Scanner에서 정수를 입력받기 위해서 nextInt() 를 사용하였지만
문자열을 입력 받을 때에는 nextInt() 가 아닌 next() 를 사용합니다.
여기서 우리는 문자열이 아닌 문자가 필요하기 때문에 입력받은 문자열에서 필요한 문자 하나만 떼와야 합니다.
그 떄 사용하는 것이 charAt(n) 이 되겠습니다. 괄호 사이에 필요한 문자의 인덱스 번호를 넣어주시면 되겠습니다.
위의 예시같은 경우에는 첫 번째 문자가 필요하기 때문에 0을 넣어줍니다.(첫 번째 문자는 인덱스 번호 0)
다음은 switch문입니다. if문처럼 조건이 참일 때와 거짓일 때를 구분하여 행동하는 것이 아닌
조건에 맞을 때 그 코드를 실행하는 방식입니다.
Scanner sc = new Scanner(System.in);
int num; System.out.printf("1~5 중에서 하나의 메뉴를 선택 : "); num = sc.nextInt(); switch(num) { case 1: System.out.printf("1번 메뉴를 선택.\n"); break; case 2: System.out.printf("2번 메뉴를 선택.\n"); break; case 3: System.out.printf("3번 메뉴를 선택.\n"); break; case 4: System.out.printf("4번 메뉴를 선택.\n"); break; case 5: System.out.printf("5번 메뉴를 선택.\n"); break; default: System.out.printf("잘못된 선택\n"); break; } |
1부터 5 중에 하나의 번호를 선택하라 했을 때 1부터 5까지의 선택지를
case라는 문으로 나누어 각각의 실행문을 작성합니다.
다만 if문달리 switch문은 해당 case문이 실행되는게 끝이 아닌 해당 case문 아래로도 실행이 되기 때문에
break; 문을 통해서 switch구문을 빠져나와주어야 합니다.
사용자가 선택지 외의 선택을 했을 때를 대비하여 default 문을 만들어 대비하도록 합시다.
'Java' 카테고리의 다른 글
Java 6일차 : 배열 (0) | 2023.03.03 |
---|---|
Java 5일차 : 반복문 (0) | 2023.02.08 |
Java 3일차 : 출력과 변수 (0) | 2023.02.06 |
Java 2일차 : 입출력, 데이터 형 (1) | 2023.02.02 |
Java 1일차 : 자바에 대한 기본적인 설명과 이클립스의 (0) | 2023.02.01 |
댓글