[Java의 정석]Chapter2.변수(13~15)

Hello_Wendy·2022년 4월 4일
0

자바의 정석

목록 보기
9/61
post-thumbnail

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 = 최대값

profile
안녕 나의 새로운 세상

0개의 댓글