본문 바로가기
language/Java

printf(), 형식지정자(%~), 입력 메소드 Scanner 클래스

by abstract.jiin 2022. 5. 16.

형식지정 프린트 함수
print()  줄바꿈을 포함하지 않는 출력 메소드(기본 출력 메소드)
println() 마지막에 줄바꿈을 자동으로 포함하는 출력 메소드 
printf() 출력 형식(Format)을 지정할 수있는 출력 메소드 
printf는 출력문에서 %를 만나면 해당 순서의 인자를 찾는다. 
인자 ) %가 나오는 키워드 

형식지정자 
%d 정수형(Integer)으로 출력
%f 실수형(Float)으로 출력
%c 문자형(Character)으로 출력
%s 문자열(String)으로 출력

 

출력시 오른쪽/왼쪽 맞춤 출력
   오른쪽 맞춤   printf(“%20s”, “Hello!”)
   왼쪽 맞춤   “%-20s”, “Hello!”


String 출력시 n개의 글자만 출력
   n개의 글자만   “%10.3s”, “Hello!”


빈공간 0으로 채우기
   int 타입      “%010d”, “123”
   float 타입      “%010.2f”, “123.456”


%[소수점앞].[소수점뒤]
      소수점앞   숫자만큼 자리 차지, 양수 오른쪽 정렬, 음수 왼쪽 정렬
      소수점뒤   실수형 표현에서 소수점 아래 자리 표시 개수

 

 

package day03;

public class Printf {

	public static void main(String[] args) {
		// 기본 포맷 형식 문법
		// printf() 포맷을 사용해 정수 출력하기
		System.out.printf("%d",10);
		System.out.println(); //줄바꿈
		
		// %f 실수형 지정자
		double pi = 3.141592;
		System.out.printf("%f", pi);
		System.out.println();
		
		
		// 소수점 아래 2자리까지만 표현 하고 싶다. 
		System.out.printf("%.2f\n", pi);
		
		
		// %c 문자형 형식지정자
		// System.out.printf("%c", 'A'); // 문자열 형식 오류
		
		
		// %s 문자열 형식지정자
		System.out.printf("%s\n","A");
		System.out.printf("%s\n", "10");
		System.out.printf("%s\n", "Hello World!");
		
		
		//왼쪽/오른쪽 맞춤 정렬
		// 10개의 빈자리를 만들고 오른쪽/왼쪽 정렬
		System.out.println("-------------왼쪽/오른쪽 정렬---------------");
		System.out.printf("%10d\n", 10);
		System.out.printf("[%5d]\n", 100);
		System.out.printf("[%-10d]\n", 100);
		System.out.printf("[%10s]\n", "hello");
		System.out.printf("[%-10s]\n", "hello");
		
		
		// 비어있는 곳을 0이라는 숫자로 채우고 싶다면?
		// 바코드 같이 특정 자리수를 항상 맞춰야 하는 경우 
		
		 System.out.println("----------빈자리 0으로 채우기-------");
		 System.out.printf("%010d\n", 10);
		 System.out.printf("%010.2f\n",3.14159);
		 // System.out.printf("%010c\n", 'A'); // 0으로 채우는거는 숫자만 된다. 문자는 오류
		 // System.out.printf("%010s\n", 'A'); // 0으로 채우는거는 숫자만 된다. 문자열도 오류
		 
		 
		 // 여러개의 형식 지정을 한번에 사용할 경우(인자 순서를 맞춘다)
		 System.out.println("--------여러개 형식지정자 사용하기 ------");
		 System.out.printf("%d, %f, %c, %s\n", 10, 3.14, 'ㄱ', "안녕하세요");
		
	}

}

실행 결과 :

10
3.141592
3.14
A
10
Hello World!
-------------왼쪽/오른쪽 정렬---------------
        10
[  100]
[100       ]
[     hello]
[hello     ]
----------빈자리 0으로 채우기-------
0000000010
0000003.14
--------여러개 형식지정자 사용하기 ------
10, 3.140000, ㄱ, 안녕하세요

 



제어문자
   \n : 줄바꿈(newline)을 하는 제어문자
   \t : 줄간격(tab)을 맞춰주는 제어문자

 

	 
		 // 영수증 출력 문제 (tab -> \t)
		 // 탕수육 	1500원
		 // 자장면 	5000원
		 // 짬뽕 		500원 
		 
		 
		 
		 System.out.printf("%s\t%s\n","탕수육","1500원");
		 System.out.printf("%s\t%s\n","자장면","5000원");
		 System.out.printf("%s\t%s\n","짬뽕","500원");
		
		 
		 System.out.printf("%s","탕수육\t1500원\n");
		 System.out.printf("짬뽕\t%s\n", "500원");
		 
		 System.out.printf("탕수육\t%10d원\n", 15000);
		 System.out.printf("자장면\t%10d원\n", 5000);
		 System.out.printf("짬뽕\t%10d원\n", 500);

실행 결과 :

탕수육     1500원
자장면     5000원
짬뽕         500원
탕수육     1500원
짬뽕          500원
탕수육             15000원
자장면               5000원
짬뽕                    500원

 

 



Scanner 클래스 


자바에서 콘솔로부터 데이터 입/출력
System.out 자바에서 콘솔에 데이터를 출력할 때 사용 
System.in 반대로 자바에서 콘솔로부터 데이터를 입력 받을 때 사용
System.err 자바에서 에러를 출력할 때 사용(텍스트 색만 붉은색)

입력받기 형식 
Scanner sc = new Scanner(System.in)
sc.next();

next() 메소드는 사용자가 콘솔창에 입력한 값을 String(문자열) 타입으로 받는다. 
nextInt() 사용자가 콘솔창에 입력한 값을 int(정수) 타입으로 받는다. 
nextDouble() 사용자가 콘솔창에 입력한 값을 double(실수) 타입으로 받는다. 
nextBoolean() 사용자가 콘솔창에 입력한 값을 boolean(논리값) 타입으로 받는다.
nextLine() 사용자가 콘솔창에 입력한 값을 String 타입으로 받아온다. 엔터로 구분하여 한줄을 통째로 받아온다. 

 

 

package day03;

import java.util.Scanner;

public class ScannerExam {

	public static void main(String[] args) {
		 // String nave = new String ("홍길동");
		 // 클래스는 항상 new를 선언해야하지만,
		 // String은 다르다(일반 변수처럼 사용을 허용) 
		  Scanner sc = new Scanner(System.in);
		 
		  System.out.print("이름을 입력하세요 : ");
		  String name = sc.next();
		 
		  System.out.println("당신의 이름은 " + name + "입니다.");
		  
		  System.out.print("정수를 입력하세요 : ");
		  int num = sc.nextInt();
		  System.out.printf("입력하신 숫자는 %d 입니다.", num);
		  
		  System.out.print("\n실수를 입력하세요 : ");
		  double pi = sc.nextDouble();
		  System.out.printf("입력하신 숫자는 %.2f 입니다.", pi);
		  
		  System.out.print("\n논리(True or False) 중 하나를 입력하세요");
		  boolean bool = sc.nextBoolean(); // true/false
		  System.out.printf("입력하신 부울대수는 " + bool + "입니다.");
		  
		
	}

}

실행 결과 : 

이름을 입력하세요 : 김지인
당신의 이름은 김지인입니다.
정수를 입력하세요 : 2
입력하신 숫자는 2 입니다.
실수를 입력하세요 : 0.1
입력하신 숫자는 0.10 입니다.
논리(True or False) 중 하나를 입력하세요 True

'language > Java' 카테고리의 다른 글

반복문 (for)  (0) 2022.05.29
삼항 연산자, 조건문(if,switch)  (0) 2022.05.23
연산자(Operator)  (0) 2022.05.18
변수  (0) 2022.05.13
Setting  (0) 2022.05.13