본문 바로가기
멀티캠퍼스 풀스택 과정/Java의 정석

자바의 정석1-3 화면 입출력

by 이쟝 2021. 12. 28.

형식화된 출력 – printf( )

- println()의 단점: 출력형식 지정불가

 

1) 실수의 자리수 조절불가 소수점 n자리만 출력하려면?

System.out.println(10/3) // 3 -> 정수 / 정수 -> 정수

System.out.println(10/0.3); //3.33333333335

 

2) 10진수로만 출력한다. - 8진수, 16진수로 출력하려면?

System.out.println(0x1A); // 26 -> 10진수

- printf()로 출력형식 지정가능

System.out.printf(“%.2f”, 10.0/3); // 3.33 -> 소수점 둘째자리

System.out.printf(“%d”, 0x1A); // 26 -> 10진수

System.out.printf(“%x”, 0x1A); // 1A -> 16진수

“% “ -> 지시자(값을 어떻게 출력할지 printf 메소드에게 지시해주기 때문)

 

  지시자 설명
  %b 불리언(Boolean)형식으로 출력
정수 %d 10(decimal)정수의 형식으로 출력
%o 8(octal)정수의 형식으로 출력
%x, %X 16(hexa-decimal)정수의 형식으로 출력
실수 %f 부동 소수점(floating-point)의 형식으로 출력
%e, %E 지수(exponent)표현식의 형식으로 출력
문자 %c 문자(character)로 출력
%s 문자열(string)으로 출력
더보기

System.our.printf(“age:%d year:%d\n”, 14, 2017); -> “age:14 year:2017”이 화면에 출력됨(\n으로 인해 줄바꿈)

\n == %n -> 가능하면 %n으로!


정수를 10진수, 8진수, 16진수로 출력

System.out.printf(“%d”, 15); // 15  -> 10진수

System.out.printf(“%o” 15); // 17 -> 8진수

System.out.prinf(“%x”, 15); // f -> 16진수

System.out.printf(“%s”,, Integer.toBinaryString(15)); // 1111 2진수

 

8진수와 16진수에 접두사 붙이기

System.out.printf(“%#o”, 15); // 017

System.out.printf(“%#x”, 15); // 0xf

System.out.printf(“%#X”, 15); // 0XF

 

실수 출력을 위한 지시자 %f – 지수형식(%e), 간략한 형식(%g)

float f = 123.456789f;

System.out.printf(“%f”, f); // 123.456787  -> 소수점이래 6자리민 출력(float 타입의 정밀도가 7이어서)

System.out.printf(“%e”, f); // 1.234568e+02 -> 지수형식

System.out.printf(“%g”, f); // 123.457 -> 간략 형식

 

double f = 123.456789;

System.out.printf(“%f”, f);  // 123.456789 -> double타입의 정밀도는 15자리이기 때문에 9자리 가능!


System.out.printf(“[%5d]%n”, 10);  // [   10] -> 들어갈 자리수는 5자리인데 입력할 자리는 두 개(오른쪽 정렬)

System.out.printf(“[%-5d]%n”, 10); // [10   ] -> (왼쪽 정렬)

System.out.printf(“[%05d]%n”, 10); // [00010]

System.out.printf(“[%5d]%n”, 1234567); // [1234567] ->들어갈 자리수보다 입력할 자리수가 많으면 입력할 자리수만큼 출력!

 

%전체자리.소수점아래자리f

System.out.printf(“d=%14.10%n”, d); //전체 14자리 중 소수점 아래 10자리

String url = www.naver.com

System.out.printf(“[%s]%n”, url);  // [www.naver.com]

System.out.printf(“[%20s]%n”, url); // [(7자리공백)www.naver.com] -> 소수점까지 포함해서

System.out.printf(“[%-20s]%n”, url); // [www.naver.com       ]

System.out.printf(“[%.8s]%n”, url); // [www.nave] -> 8자리까지만 부분 출력


화면에서 입력받기 - Scanner

Scanner -> 화면으로부터 데이터를 입력 받는 기능을 제공하는 클래스

Scanner를 사용하려면

1) import문 추가

import java.util.*;

2) Scanner 객체의 생성

Scanner scanner = new Scanner(System.in); -> System.in은 화면입력

3) Scanner객체를 사용

int num = scanner.nextInt( ); // 화면에서 입력 받은 정수를 num에 저장

 

String input = scanner.nextLine( ); // 화면에서 입력 받은 내용을 input에 저장 -> nextLine(한 행)

int num =Integer.parseInt(input); // 문자열(input)을 숫자(num)로 변환

=> 아래 두문장과 int num 문장은 같음


정수형의 오버플로우

오버플로우: 표현가능한 범위를 넘는 것 (ex 계수기)

최대값 + 1 -> 최소값 // 1111+1 -> 0000

최소값 -1 -> 최대값 // 0000-1 -> 1111