on
-3 화면 입출력
-3 화면 입출력
형식화된 출력 – 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
”, 14, 2017); -> “age:14 year:2017”이 화면에 출력됨(
으로 인해 줄바꿈)
== %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
from http://everysmallstep.tistory.com/61 by ccl(A) rewrite - 2021-12-28 10:01:45