[Java의 정석]Chapter2.변수(13~15)
Chapter 2. 변수
13. Printf를 이용한 출력 예제
class Ex2_9 {
public static void main(String[] args) {
String url = "www.codechobo.com";
float f1 = .10f; //0.10, 1.0e-1
float f2 = 1e1f; //10.0, 1.0e1, 1.0e+1
float f3 = 3.14e3f;
double d = 1.23456789;
System.out.printf("f1=%f, %e, %g%n", f1, f1, f1);
System.out.printf("f2=%f, %e, %g%n", f2, f2, f2);
System.out.printf("f3=%f, %e, %g%n", f3, f3, f3);
System.out.printf("d=%f%n", d);
System.out.printf("d=%14.10f%n", d); //전체14자리 중 소수점 10자리
System.out.printf("[12345678901234567890]%n");
System.out.printf("[%s]%n", url);
System.out.printf("[%20s]%n", url);
System.out.printf("[%-20s]%n", url); //왼쪽 정렬
System.out.printf("[%.8s]%n", url); //왼쪽에서 8글자만 출력
}
}
🍕 출력 결과
- 실수형 값의 출력에 사용되는 지시자는
%f
%e
%g
가 있는데,%f
가 주로 쓰이고,%e
는 지수형태로 출력할 때,%g
는 값을 간략하게 표현 할 때 사용 %f
는 기본적으로 소수점 아래 6자리까지만 출력하기 때문에 소수점 아래 7자리에서 반올림- 전체 자리수와 소수점 아래의 자리수를 지정할 수도 있음
%전체자리.소수점아래자리f
System.out.printf("d=%14.10f%n", d);
▶전체 14자리 중 소수점 아래 10자리
ex
12341234567890 //14자리
--1.2345678900 //10자리,앞 빈자리:공백으로 채움, 뒤 빈자리:0으로 채움
*지시자를 '%014.10'으로 지정했다면, 양쪽 빈자리를 모두 0으로 채웠을 것
- 소수점도 한자리를 차지하며,
소수점 아래의 빈자리는 0
으로 채우고정수의 빈자리는 공백
으로 채워서 전체 자리수를 맞춤 - 지시자
%s
에도 숫자를 추가하면 원하는 만큼의 출력공간을 확보하거나 문자열의 일부만 출력 가능
System.out.printf("[%s]%n", url); //문자열의 길이만큼 출력공간 확보
System.out.printf("[%20s]%n", url); //최소 20글자 출력공간 확보(우측정렬)
System.out.printf("[%-20s]%n", url); //최소 20글자 출력공간 확보(좌측정렬)
System.out.printf("[%.8s]%n", url); //왼쪽에서 8글자만 출력
- 지정된 숫자보다 문자열의 길이가 작으면 빈자리는 공백으로 출력
공백
이 있는 경우기본적으로 우측 끝
에 문자열을 붙이지만,-
를 붙이면좌측 끝
에 붙임.
을 붙이면 문자열의 일부만 출력 가능
14. 화면으로부터 입력받기
import java.util.Scanner;
: Scanner클래스를 사용하기 위해 추가Scanner scanner = new Scanner(System.in);
: Scanner클래스의 객체를 생성String input = scanner.nextLine();
: 입력받은 내용을 input에 저장int num = Integer.parseInt(input);
: 입력받은 내용을 int타입의 값으로 변환
→만일 입력받은 문자열을 숫자(int타입의 정수)로 변환하려면, Integer.parseInt()라는 메서드 이용
→Scanner클래스에는nextInt()
,nextFloat()
와 같이 변환없이 숫자로 바로 입력받을 수 있는 메서드들이 있음int num = scanner.nextInt();
: 정수를 입력받아서 변수 num에 저장
import java.util.Scanner; //Scanner를 사용하기 위해 추가
class Ex2_10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("두자리 정수를 하나 입력하세요 : ");
String input = scanner.nextLine();
int num = Integer.parseInt(input); //입력받아 문자열을 숫자로 변환
System.out.println("입력내용 :"+input);
System.out.printf("num=%d%n", num);
}
}
🍕 출력결과
15. 정수형의 오버플로우
-
연산과정에서 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것을
오버플로우(overflow)
라고 함 -
오버플로우가 발생했다고 해서 에러가 발생하는 것은 아니지만 예상하는 결과를 얻지 못함
ex
💡네 자리 계수기라면 '0000'부터 '9999'까지 밖에 표현하지 못하므로, 최대값인 '9999' 다음 숫자는 '0000'이 됨 반대로 최소값인 '0000'에서 1을 감소시키면 '9999'가 됨 즉, 4bit 2진수의 최소값이 '0000'부터 시작해서 1씩 계속 증가하다가 최대값인 '1111'을 넘으면 다시 '0000'이 됨. 그래서 값을 1씩 무한히 증가시켜도 '0000'과 '1111'의 범위를 벗어나지 않음
-
정수형 타입이 표현할 수 있는 최대값에 1을 더하면 최소값이 되고, 최소값에서 1을 빼면 최대값이 됨
최대값+1 = 최소값
최소값-1 = 최대값
Author And Source
이 문제에 관하여([Java의 정석]Chapter2.변수(13~15)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wendy1126/Java의-정석Chapter2.변수1315저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)