728x90
✓ 출력하기
- println() : 출력 후 행 바꿈
- print() : 단순 출력
- printf("형식문자열", 값1, 값2, ...): 괄호 안의 첫 번째 문자열 형식대로 내용을 출력
✏️ 형식문자열
⇨ 구조: %[argument_index$] [flags] [width] [.precision] conversion
⇨ 각 자리의 기능: %[값의 순번] [생략 시 왼쪽 공백, -(오른쪽 공백), 0(공백을 0으로 채움)] [전체자릿수] [소수자릿수] 변환문자
⇨ 변환 문자: d(정수), f(실수), s(문자열)
예시>
int value = 123;
System.out.printf("상품의 가격:%d원\n", value); // 상품의 가격:123원
System.out.printf("상품의 가격:%6d원\n", value); // 상품의 가격: 123원
System.out.printf("상품의 가격:%-6d원\n", value); // 상품의 가격:123 원
System.out.printf("상품의 가격:%06d원\n", value); // 상품의 가격:000123원
double area = 3.14159 * 10 * 10;
System.out.printf("반지름이 %d인 원의 넓이:%10.2f\n", 10, area);
// 반지름이 10인 원의 넓이: 314,16
String name = "홍길동";
String job = "도적";
System.out.printf("%6d | %-10s | %10s\n", 1, name, job);
// 1 | 홍길동 | 도적
✓ 입력받기
자바에서는 다음과 같이 키코드를 입력받을 수 있다.
public class KeyCodeExample {
public static void main(String[] args) throws Exception {
int keyCode;
keyCode = System.in.read(); // a 입력시
System.out.println("keyCode: " + keyCode); // keyCode: 97
}
}
이때 System.in.read() 는 키코드를 하나씩 읽기 때문에 한글은 읽을 수 없고 입력된 내용을 통 문자열로 읽지 못한다.
이를 보완하는 것이 Scanner 클래스이다.
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String inputData;
while(true) {
inputData = scanner.nextLine(); // nextLine() 은 엔터키 이전까지 입력된 문자열을 읽는다
System.out.println("입력된 문자열: \"" + inputData + "\"");
if(inputData.equals("q")) {
break;
}
}
System.out.println("종료");
}
}
❗️ 자바에서는 기본 타입 (primitive data type / byte, short, int, long, float, double, boolean) 의 값이 동일한지 비교할 때에는 "==" 을 사용하고 문자열이 동일한지 비교할 때는 equals() 메소드를 사용한다 (객체이기 때문)
❗️ 위 예제들에서 scanner에 Resource leak: 'scanner' is never closed라고 뜨는데 이건 객체가 닫히지 않은 채로 프로그램이 종료되었음을 나타낸다. 이는 보통 메모리 누수로 이어질 수 있다. try-finally 블록을 사용하여 scanner.close()를 호출하도록 하면 이 오류를 해결할 수 있다. 혹은 try(Scanner scanner = new Scanner(System.in))을 해준 뒤 try 블록안에 나머지 내용을 넣음으로서 오류를 해결할 수 있다.
반응형
'컴퓨터 & 코딩 > Java' 카테고리의 다른 글
[혼공학습단 10기][혼공자] switch 조건문과 반복문 (0) | 2023.06.29 |
---|---|
[혼공학습단 10기][혼공자] 연산자 (0) | 2023.06.29 |
[혼공학습단 10기][혼공자] 타입 변환 (0) | 2023.06.28 |
[혼공학습단 10기][혼공자] 변수와 기본 타입 (0) | 2023.06.28 |
[혼공학습단 10기][혼공자] Chapter 1 정리 (0) | 2023.06.28 |