Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

[Java] 예제 소스 정리 - 콘솔 출력 본문

네이버클라우드 AIaaS 개발자 양성과정 1기/Java

[Java] 예제 소스 정리 - 콘솔 출력

끈기JK 2022. 12. 30. 20:28

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);
  }
}