티스토리 뷰
Programming Language/JAVA (2) - 혼공자
[Java 혼자 공부하는 자바] System.out.println(), System.out.print(), System.out.println(), System.in.read(), Scanner
나수비니 2023. 9. 21. 21:42728x90
핵심 키워드
- System.out.println(), System.out.print(), System.out.println(), System.in.read(), Scanner
핵심 포인트
- 프로그래밍 언어에는 시스템 표준 출력장치와, 표준 입력 장치 이해
- 표준 출력 장치 > 모니터
- 표준 입력 장치 > 키보드
System.out
- 시스템의 표준 출력 장치로 출력
System.out.println("출력 내용");
System.in
- 시스템의 표준 입력 장치에서 사용
모니터로 변수 값 출력하기
Println() 메소드
- 괄호 안에 리터럴 넣으면 그대로 출력/변수 넣으면 저장된 값 출력
메소드의미
println(내용) | 괄호 안의 내용을 출력하고 행을 바꿔라 |
print(내용) | 괄호 안의 내용을 출력만 해라 |
print(”형식 문자열”, 값1, 값2, …); | 괄호 안의 첫 번째 문자열 형식대로 내용을 출력해라 |
Printf() 메소드
- 개발자가 원하는 형식화된 문자열 (format string) 출력 (전체 출력 자리수 및 소수 자릿수 제한)
System.out.printf("이름: %S", "감자바"); => 이름: 감자바
System.out.printf("나이: %d", 25); => 나이: 25
순번(argument_index$)
형식 문자열에 포함될 값 2개 이상인 경우, 값의 순번 표시해야 한다.
System.out.print("이름: %1$s, 나이: %2$d", "감자바", 25); => 이름: 감자바, 나이: 25
package sec04.exam01;
public class PrintfExample {
public static void main(String[] args) {
int value = 123;
System.out.printf("상품 가격: %d원\\n", value);
System.out.printf("상품 가격: %6d원\\n", value);
System.out.printf("상품 가격: %-6d원\\n", value);
System.out.printf("상품 가격: %06d원\\n", value);
double area = 3.14159 * 10 * 10;
System.out.printf("반지름이 %d인 원의 넓이: %10.2f\\n", 10, area);
String name = "홍길동";
String job = "도적";
System.out.printf("%6d | %-10s | %10s\\n", 1, name, job);
}
}
키코드에서 입력된 내용을 변수에 저장하기
키코드 (KeyCode)
- 키보드에서 키를 입력할 때 프로그램에서 숫자로 된 키코드를 읽음
- System.in의 read() 사용
- 얻은 키코드는 대입 연산자 사용하여 Int 변수에 저장
package sec04.exam02;
public class keyCodeExample {
public static void main(String[] args) throws Exception {
int keyCode;
keyCode = System.in.read();
//read라는 메소드를 통해서 keyCode 값 읽는데, 만약 문제가 발생하면 에러 발생하면 throws Exceptio으로 예외처리
System.out.println("keyCode: " + keyCode);
System.out.println("keyCode: " + keyCode);
}
}
- 콘솔창에서 A를 입력후 엔터치면 키코드가 숫자를 나타냄 (빨간버튼 종료 = 프로그램 끝났다!) → 신기한 기능
- q를 입력하면 반복 종료
package sec04.exam04;
public class QStopExample {
public static void main(String[] args) throws Exception {
int keyCode;
while(true) {
keyCode = System.in.read();
System.out.println("KeyCode: " + keyCode);
if(keyCode == 113) {
break; //keycode가 113일 경우 while 반복을 중지함
}
}
System.out.println("종료");
}
}
🟡 코드 뜯기
- if(keyCode == 113) → 괄호 안이 true가 되면 중괄호 블록 { }을 실행한다.
- keycode == 113은 key code 변수값이 113과 동일한지를 검사
- 동일하다면 true, 동일하지 않다면 false가 된다.
System.in.read()의 단점
- 키코드를 하나씩 읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없음
- 키보드로부터 입력된 내용을 통 문자열로 읽지 못 함.
⭐︎ 이러한 단점 해결을 위해, Scanner 클래스 사용
- Java가 제공하는 Scanner 클래스를 이용하면 입력된 통문자열을 읽을 수 있음
- Scanner scanner = new Scanner (System.in);
- Scanner로 scanner라는 변수를 선언 → new라는 연산자로 Scanner라는 객체 생성 → Scanner는 통문자열을 만들어 줌
package sec04.exam05;
import java.util.*;
**//scanner 사용 시 java.util.* 호출해줘야함**
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inputData;
while(true) {
inputData = scanner.nextLine();
System.out.println("입력된 문자열: " + inputData + "\\"");
if(inputData.equals("q")) {
break;
}
System.out.println("종료");
}
}
}
🟡 코드 뜯기
- Scanner scanner는 Scanner 타입의 변수 scanner를 선언
- new Scanner(System.in)은 시스템의 입력장치로부터 읽는 Scanner를 생성하는 코드
- 생성된 Scanner는 scanner 변수에 저장했다가, 언제든지 키보드에서 읽고 싶을 때 scanner.nextLine(); 메소드 실행하면 됨
- import문
- Scanner가 java.util 패키지에 있다는 것을 컴파일러에게 알려주는 역할을 한다.
- 이 코드가 생략되면, Scanne를 찾을 수 없다는 컴파일 에러가 발생한다.
기본 타입의 값 비교와 문자열 비교
- 기본타입 → (==)
- byte, short, int, long, float, double, boolean
- 문자열 → (equals()) 사용
- String
문자열의 비교는 equals() 메소드 사용
boolean result = inputData.equals("비교문자열");
**//저장된 문자열과, 비교문자열 비교 -> 같으면 true, 다르면 false**
🟡 코드 뜯기
- 비교
- inputData(저장된 문자열) ↔ “비교문자열”
- 결과
- 같으면 result는 true, 다르면 false
String str1 = "java";
boolean result1 = str.equals("java"); **//true**
boolean result2 = str.equals("Java"); **//false**
- Scanner 사용 시 java.util. 호출해야 함*
끝내기 핵심
- System.out.println()
- 괄호에 주어진 매개값을 모니터로 출력하고 개행
- System.out.print()
- 괄호에 주어진 매개값을 모니터로 출력만 하고 개행하지 않는다
- System.out.print()
- 괄호에 주어진 형식대로 출력한다
- System.in.read()
- 키보드에서 입력된 키코드를 읽는다
- Scanner
- 키보드로부터 입력된 내용을 통 문자열로 쉽게 읽기 위해 Scanner를 사용
❓궁금한 점
- keyCode를 왜 쓸까
- 프로그램에서 입력을 더 쉽게 처리할 수있다. => 각 키의 고유한 숫자코드를 식별
- 교차 플랫폼 호환 가능. => 키 코드는 플랫폼 독립적임! 다양한 운영체제와 하드웨어 구성에서 일관되게 작동
- 특수 키 처리에 용이 => 기능키(f1,f2 등), 화살표 키, 제어키 (Ctrl,Alt,Shift) 등 특수키를 처리하는데에 유용
'Programming Language > JAVA (2) - 혼공자' 카테고리의 다른 글
[Java 혼자 공부하는 자바] 변수의 타입 - 기본(Primitive type), 참조(Reference type) (0) | 2023.09.23 |
---|---|
[Java 혼자 공부하는 자바] for문, while문, do-while문, break문, continue문 (0) | 2023.09.23 |
[Java 혼자 공부하는 자바] 증감, 비교, 논리, 대입, 삼항 연산자 (0) | 2023.09.22 |
[Java 혼자 공부하는 자바] 타입 변환, 자동 및 강제 타입 변환, 문자열 결합 합산 (0) | 2023.09.20 |
[Java 혼자 공부하는 자바] 변수, 변수 선언, 변수 사용, 변수 사용 범위 (0) | 2023.09.19 |