<자바에서 키 입력>
• System in
키보드부터 직접 읽는 자바의 표준 입력 스트림이다.
하지만 응용프로그램이 받은 바이트 정보를 문자나 실수로 변환해야 하는 번거로움이 있다.
따라서 문자나 정수, 실수, 문자열 등 사용자가 원하는 타입으로 변환해주는 Scanner 클래스를 사용하는 것이 효과적이다.
• Scanner를 이용한 키 입력
우선 다음과 같이 Scanner 객체를 생성한다.
Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
Scanner를 사용하기 위해서는 프로그램 맨 앞줄에 다음 import 문이 필요하다.
import java.until.Scanner;
Scanner 클래스는 사용자가 입력하는 키 값을 공백 문자를 기준으로 분리하여 토큰 단위로 읽는다.
Scanner의 주요 매소드는 꼭 알아두는 것이 좋다.
메소드 | 설명 |
String next() | 다음 토큰을 문자열로 리턴 |
byte nextByte() | 다음 토큰을 byte 타입으로 리턴 |
byte nextshort() | 다음 토큰을 short 타입으로 리턴 |
int nextInt() | 다음 토큰을 int 타입으로 리턴 |
long nextLong() | 다음 토큰을 long 타입으로 리턴 |
float nextFloat() | 다음 토큰을 float 타입으로 리턴 |
double nextDouble() | 다음 토큰을 double 타입으로 리턴 |
boolean nextBoolean() | 다음 토큰을 boolean 타입으로 리턴 |
String nextLine() | '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문장열 리턴 |
void close() | Scanner의 사용 종류 |
boolean hasNext() | 현재 입력된 토큰이 있으면 true, 아니면 입력 때까지 무한정 대기, 새로운 입력이 들어올 때 true 리턴, ctrl-z 키가 입력되면 입력 끝이므로 false 입력 |
"Seoul Korean"와 같이 공백이 있는 문자열을 입력하기 위해서는 Scanner 클래스의 nextline()을 사용하면 된다.
next()로는 앞의 "Seoul"만 문자열로 리턴한다.
또한 nextline()은 <Enter>키의 입력을 기다리는 용도로 사용할 수 있다.
(빈 문자열을(" ") 리턴하면서 바로 돌아온다.)
<연산>
주어진 식을 계산하여 결과를 얻어내는 과정을 연산이라고 한다.
• 산술 연산
더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%)가 있다.
%연산자는 다음과 같이 정수n이 홀수인지 짝수인지 구분할 때 유용하게 활용된다.
int r = n % 2; // n이 홀수이면 r은 1, 짝수이면 r은 0
• 증감 연산
++, --의 두가지가 있다.
피연산자의 앞 또는 뒤에 붙어 값을 1 증가시키거나 1 감소시킨다.
• 대입 연산
연산자의 오른쪽 식의 결과를 왼쪽에 있는 변수에 대입한다.
int a = 1, int b = -3;
a = b; // b 값을 a에 대입하여 a=3
a += b; // a = a + b의 연산이 이루어져, a=6. b는 3 그대로
• 비교 연산과 논리 연산
비교 연산자는 두 개의 피연산자를 비교하여 true 또는 false의 논리 연산을 한다.
논리 연산자는 논리 값을 대상으로 AND, OR, XOR, NOT의 논리 연산을 한다.
복합하여 사용할 수도 있다.
(age >= 20) && (age < 30) // 나이(int age)가 20대인 경우
(C >= 'A') && ( C <= 'Z') // 문자(char c)가 대문자인 경우
(x>=0) && (y>=0) && (x<=50) && (y<=50) // (x,y)가 (0, 0)과 (50, 50)의 사각형 내에 있음
20 <= age < 30 // 이렇게 작성하면 오류
• 조건 연산
세개의 피연산자로 구성된 삼항 연산자이다.
condition ? opr2 : opr3
if-else를 간결하게 표현할 수 있다.
int x = 5;
int y = 3;
int s;
if(x>y)
s = 1;
else
s = -1;
int s = (x>y)?1:-1;로 표현 가능
• 비트 연산
비트 논리 연산
비트끼리 AND, OR, XOR, NOT 연산
byte flag; // 8개의 각 비트는 8개의 센서 값을 각각 가리킴
···
if(flag & 0b00001000 == 0) System.out.print("온도는 0도 이하")
else System.out.print("온도는 0도 이상");
온도는 0도 이상
비트 시프트 연산
비트를 오른쪽이나 왼쪽으로 이동
byte a = 20;
byte b = (byte) (a >> 2); // 변수 a 값을 오른쪽으로 2비트 이동. b 값은 5
byte c = (byte) 0xf8; // 0xf8는 -8을 16진수로 표현한 값
byte d = (byte) (c >> 2); // 변수 c를 오른쪽으로 2비트 이동. d 값은 0xfe가 된다.
// 0xfe는 십진수 -2
< 조건문>
• 단순 if 문
if의 괄호 안에 조건식이 있는 형식이다.(논리형 변수나 논리 연산)
정수 n이 짝수인지 판별하는 코드
if(n%2 == 0){
System.out.println(n + "은 짝수입니다.");
}
• if-else 문
조건식이 true면 실행문자1 실행 후 if-else 문을 벗어난다.
false인 경우에 실행문장2 실행 후 if-else문을 벗어난다.
정수 n이 짝수인지 홀수인지 구분하는 코드
if (n%2 == 0) {
System.out.println(n + "은 짝수입니다.");
}
else {
System.out.println(n + "은 홀수입니다.");
}
• 다중 if-else 문
조건문이 너무 많은 경우에는 switch 문 사용을 권장한다.
• switch 문
switch 문은 먼저 '식'을 계산하고 그 결과 값을 일치하는 case 문으로 분기한다.
case문의 '실행문장'을 실행한 후 break를 만나면 switch 문을 벗어난다.
만약 case의 비교 값과 일치하는 것이 없으면 default 문을 실행한다.
(default 문은 생략 가능하다.)
case 문에는 다음과 같이 변수나 식은 사용할 수 없다.
int b;
switch(b) {
case a : ... ; break; // 오류. 변수 a 사용 안됨
case a > 3 ... ; break; // 오류. 식(a>3) 사용 안됨
}
'CS > 객체지향프로그래밍' 카테고리의 다른 글
[객체지향프로그래밍] #6 모듈과 패키지 (0) | 2024.06.09 |
---|---|
[객체지향프로그래밍] #5 상속 (0) | 2024.04.25 |
[객체지향프로그래밍] #4 클래스와 객체 (0) | 2024.04.21 |
[객체지향프로그래밍] #3 배열 (0) | 2024.04.18 |
[객체지향프로그래밍] #1 자바 기본 프로그래밍(1) (0) | 2024.04.12 |