개발자입니다
[Java] 예제 소스 정리 - 콘솔 출력 본문
com.eomcs.lang.ex99
예제 소스 정리
콘솔 출력
# 콘솔로 출력하기 II - 특정 형식을 갖춘 문자열 안에 값을 삽입하여 출력하기
public class Exam0120 {
public static void main(String[] args) {
//형식을 지정하지 않으면 print()와 같다.
System.out.printf("Hello!\n");
// %s : 지정한 자리에 문자열을 삽입한다.
// 삽입할 값은 오른쪽에 설정한다.
System.out.printf("이름: %s\n", "홍길동");
System.out.printf("안녕하세요! %s입니다.\n", "임꺽정");
// %d : 정수 값을 10진수 문자열로 만들어 삽입한다.
// %x : 정수 값을 16진수 문자열로 만들어 삽입한다.
// %c : 정수 값을 문자로 만들어 삽입한다.
// %b : true/false 값을 문자열로 만들어 삽입한다.
System.out.printf("%d %x %c %b\n", 65, 65, 65, false);
// 한 개의 값을 여러 곳에 삽입할 수 있다.
// %[n$]s : n은 문자열에 삽입될 값의 순서이다. 순서는 1부터 증가한다.
System.out.printf("%d %1$x %1$c\n", 65);
System.out.printf("%3$d %1$x %2$c\n", 65, 66, 67); // 3$(67), 1$(65), 2$(66)
// 값을 삽입할 때 사용할 공간을 지정할 수 있다.
// 문자열을 삽입할 때:
// %[-][사용할공간너비]s : -는 왼쪽 정렬이다. 안 붙이면 기본 오른쪽 정렬이다.
System.out.printf("'%-10s' '%10s'\n", "홍길동", "임꺽정");
System.out.printf("'%-10d' '%10d'\n", 12345, 12345);
// 정수를 삽입할 때:
// %[0][사용할공간너비]d : 앞의 빈자리는 0으로 채운다.
// %[+][0][사용할공간너비]d : +는 숫자 앞에 부호를 붙인다.
System.out.printf("'%010d' '%07d'\n", 12345, 12345);
System.out.printf("'%+010d' '%+07d'\n", 12345, -12345);
}
}
# 콘솔로 출력하기 III - 형식을 갖춰서 날짜 값 출력하기
public class Exam0130 {
public static void main(String[] args) {
// 현재 날짜 및 시각 정보를 생성한다.
// java.lang 패키지의 멤버를 사용할 때는 그냥 이름을 지정하면 된다.
// 그 외 다른 패키지의 멤버를 사용할 때는 반드시 패키지 이름을 함께 지정해야 한다.
java.util.Date today = new java.util.Date();
// %t[날짜 및 시각 옵션]
// 날짜 및 시간 옵션
// Y : 날짜 및 시각 데이터에서 년도를 추출하여 4자리로 표현한다.
// y : 날짜 및 시각 데이터에서 년도를 추출하여 뒤의 2자리로 표현한다.
System.out.printf("%1$tY, %1$ty\n", today);
// B : 날짜 및 시각 데이터에서 월을 추출하여 전체 이름으로 표현한다. ex) January
// b : 날짜 및 시각 데이터에서 월을 추출하여 단축 이름으로 표현한다. ex) Jan
System.out.printf("%1$tB, %1$tb\n", today);
// m : 날짜 및 시각 데이터에서 월을 추출하여 2자리 숫자로 표현한다. ex) 12, 01
System.out.printf("%1$tm\n", today);
// d : 날짜 및 시각 데이터에서 일을 추출하여 2자리 숫자로 표현한다. ex) 01, 22
// e : 날짜 및 시각 데이터에서 일을 추출하여 1자리 숫자로 표현한다. ex) 1, 22
System.out.printf("%1$td %1$te\n", today);
// A : 날짜 및 시각 데이터에서 요일을 추출하여 긴 이름으로 표현한다. ex) Sunday
// a : 날짜 및 시각 데이터에서 요일을 추출하여 짧은 이름으로 표현한다. ex) Sun
System.out.printf("%1$tA %1$ta\n", today);
// H : 날짜 및 시각 데이터에서 시각을 추출하여 24시로 표현한다.
// I : 날짜 및 시각 데이터에서 시각을 추출하여 12시로 표현한다.
System.out.printf("%1$tH %1$tI\n", today);
// M : 날짜 및 시각 데이터에서 시각을 추출하여 분을 표현한다.
System.out.printf("%1$tM\n", today);
// S : 날짜 및 시각 데이터에서 시각을 추출하여 초를 표현한다.
// L : 날짜 및 시각 데이터에서 시각을 추출하여 밀리초를 표현한다.
// N : 날짜 및 시각 데이터에서 시각을 추출하여 나노초를 표현한다.
System.out.printf("%1$tS %1$tL %1$tN\n", today);
// p : 오전 오후 출력하기
// 소문자 p를 사용하면 am 또는 pm으로 출력하고,
// 대문자 P를 사용하면 AM 또는 PM으로 출력한다.
// 한글은 대소문자가 없기 때문에 의미없다.
System.out.printf("%1$tp\n", today);
// 년-월-일 시:분:초를 출력하라! 예) 2019-01-04 12:04:30
System.out.printf("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS\n", today);
}
}
# 키보드 입력 받기 - System.in 과 java.util.Scanner
public class Exam0210 {
public static void main(String[] args) {
// 1) 키보드로 입력한 데이터를 읽을 때 사용할 도구를 준비한다.
java.io.InputStream keyboard = System.in;
// 2) InputStream은 바이트 단위로 읽는 기능이 있다.
// 바이트 단위로 읽어서 int나 문자열로 바꾸려면 또 코딩해야 하는 불편함이 있다.
// 이런 불편함을 줄이기 위해 자바에서는 바이트를 개발자가 원하는 값으로
// 바꿔주는 기능이 들어 있는 도구를 제공한다.
// 그 도구가 java.util.Scanner 이다.
// => 키보드를 스캐너에 연결한다.
java.util.Scanner keyboardScanner = new java.util.Scanner(keyboard);
// print()는 문자열을 출력한 후 줄 바꿈을 하지 않는다.
System.out.print("팀명? ");
// nextLine()
// - Scanner 도구를 사용하여 키보드로부터 한 줄의 문자열을
// 가져올 때 사용하는 명령이다.
// - 동작은?
// 사용자가 한 줄 입력할 때까지,
// 즉 입력 데이터에 줄바꿈을 의미하는 0d0a 2바이트가 들어올 때까지 대기한다.
// 사용자가 엔터키를 누르면,
// 입력값으로 0d0a 2바이트 값이 들어오고,
// nextLine()은 그 전까지 들어온 데이터를 문자열로 만들어 리턴한다.
String str = keyboardScanner.nextLine();
// 사용자가 입력한 문자열을 출력한다.
System.out.println(str);
// 스캐너는 사용 후 키보드와의 연결을 끊고 닫는다.
keyboardScanner.close();
}
}
System.out
- 표준 출력 장치.
- 즉 콘솔(모니터, 명령창)을 가리킨다.
System.in
- 표준 입력 장치.
- 즉 키보드를 가리킨다.
# 키보드 입력 받기 - int, float, boolean 값 읽기
public class Exam0230 {
public static void main(String[] args) {
java.util.Scanner keyScan = new java.util.Scanner(System.in);
System.out.print("int: ");
int i = keyScan.nextInt();
// nextInt()는 한 개의 토큰(token)을 읽을 때가지 기다린다.
// 한 개의 token을 읽으면 4바이트 정수 값으로 바꾼 다음에 리턴한다.
// 토큰(token)?
// => 토큰이란 공백으로 구분되는 단어를 뜻한다.
// 공백(whitespace)?
// => 스페이스(space), 탭, 줄바꿈 코드를 말한다.
// 예) aaa bbb cc ==> aaa, bbb, cc
// 중간에 여러 개의 공백이 들어가더라도 한 개의 공백으로 간주한다.
System.out.print("float: ");
float f = keyScan.nextFloat();
System.out.print("boolean: ");
boolean b = keyScan.nextBoolean();
keyScan.close();
System.out.printf("%d, %f, %b\n", i, f, b);
}
}
# 키보드 입력 받기 - 여러 종류의 데이터를 섞어 입력 받기
public class Exam0240 {
public static void main(String[] args) {
java.util.Scanner keyboardScanner = new java.util.Scanner(System.in);
System.out.print("나이? ");
int age = keyboardScanner.nextInt();
// nextInt()는 한 개의 토큰을 읽은 후에 줄 바꿈 코드는 읽기 전 상태로 내비둔다.
// 따라서 다음에 nextLine()을 호출하면 의도치 않게 빈 문자열을 가진 한 줄을
// 읽는 상황이 된다.
// nextInt() 다음에 nextLine()을 호출할 때 이런 상황이 발생한다.
// 해결 방법? nextInt()를 호출한 후 남아있는 엔터 코드를 읽어서 제거하라.
keyboardScanner.nextLine(); // 남아 있는 빈 문자열의 한 줄(LF 코드)을 읽어서 버린다.
System.out.print("이름? ");
String name = keyboardScanner.nextLine();
keyboardScanner.close();
System.out.printf("%d(%s)\n", age, name);
}
}
# 키보드 입력 받기 - 토큰 단위로 문자열 읽기
public class Exam0260 {
public static void main(String[] args) {
java.util.Scanner keyboardScanner = new java.util.Scanner(System.in);
// next()
// - 토큰 단위로 입력 데이터를 잘라서 읽을 때 유용하다.
System.out.print("입력: ");
String token1 = keyboardScanner.next();
String token2 = keyboardScanner.next();
String token3 = keyboardScanner.next();
keyboardScanner.close();
System.out.printf("%s, %s, %s\n", token1, token2, token3);
}
}
'네이버클라우드 AIaaS 개발자 양성과정 1기 > Java' 카테고리의 다른 글
[비트캠프] 42일차(9주차2일) - Java(클래스) (0) | 2023.01.03 |
---|---|
[비트캠프] 41일차(9주차1일) - Java(메서드) (0) | 2023.01.02 |
[Java] 예제 소스 정리 - 메서드(개념, 가변 파라미터, 배열 파라미터, call by value, call by reference, main(), JVM 아규먼트) (0) | 2022.12.30 |
[비트캠프] 40일차(8주차5일) - Java(클래스), myapp-03~06 실습 (0) | 2022.12.30 |
[Java] 예제 소스 정리 - 제어문(if, for, while, ArrayList) (1) | 2022.12.30 |