Java

변수(Variable) - 변수의 타입 : printf() & Scanner

제주니어 2022. 8. 16. 22:00

변수의 타입

1. 형식화된 출력 - printf()

  • printf() : ‘지시자(specifier)’를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다. ‘지시자’는 값을 어떻게 출력할 것인지를 지정해주는 역할을 한다.
  • 정수형 변수에 저장된 값을 10진 정수로 출력할 대는 지시자 ‘%d’를 사용하며, 변수의 값을 지정된 형식으로 변환해서 지시자 대신 넣는다.
  • println()과 달리 printf()는 출력 후 줄바꿈을 하지 않는다. 줄바꿈을 하려면 지시자 ‘%n’을 따로 넣어줘야 한다.
System.out.printf("당신의 이름은 %s , 키는 %.1fcm, 성별은 %s입니다.", name, height, gender);
  • 지시자의 전체 목록 : Java API에서 Formatter 클래스(java.util패키지)를 찾으면 된다.
%b 불리언(boolean) 형식으로 출력
%d 10진(decimal) 정수의 형식으로 출력
%o 8진(octal) 정수의 형식으로 출력
%x, %X 16진(hexa-decimal) 정수의 형식으로 출력
%f 부동 소수점(floating-point)의 형식으로 소수점 아래 6자리까지만 출력
%e, %E 지수(exponent) 표현상의 형식으로 출력
%c 문자(charater)로 출력
%s 문자열(string)로 출력
  • 정렬방법
%5d 5칸을 확보하고 오른쪽 정렬
%-5d 5칸을 확보하고 왼쪽 정렬
%.2f 소수점 아래 2자리까지만 표시
printf() 메소드
		
int num1 = 10;
int num2 = 20;
float fnum = 3.141592f;
double dnum = 4.1592;

// %d 서식 지정자
System.out.printf("%d\\n", num1);
System.out.printf("%5d\\n", num1);
System.out.printf("%d\\n", num1, num2);
//		System.out.printf("%d %d/n", num1); // error

// %f 서식 지정자 
System.out.printf("%f %f\\n", fnum, dnum);   // \\n : 줄 바꿈
System.out.printf("%f \\t %f\\n", fnum, dnum);  // \\t : 수평 탭
System.out.printf("%.3f \\t %.3f\\n", fnum, dnum);  //

 

4. 화면에서 입력받기 - Scanner

  • 사용자로부터 입력되는 정수, 실수, 문자열을 처리하는 클래스이다. 
  • Scanner 클래스를 사용하는 방법
import java.util.*; // Scanner 클래스를 사용하기 위해 추가
Scanner scanner = new Scanner(System.in); // Scanner 클래스의 객체를 생성

String input = scanner.nextline(); // 입력받을 내용을 input에 저장
int num - Integer.paraseInt(input); // 입력받은 내용을 int 타입의 값으로 변환
  • scanner.nextLine() : 사용자가 입력한 값을 모두 읽어온다. (공백 포함)
  • scanner.next() : 사용자가 입력한 값 중에 공백이 있을 경우 공백 이전까지의 값만 읽어온다. 
  • scanner.nextInt() : 정수를 입력받을 때 사용한다.
  • scanner.nextDouble() : 실수를 입력받을 때 사용한다.

String name = ""; // 초기화, "" 대신 참조변수라서 null 을 사용하기도 함 
double height = 0.0;
char gender = '\u0000';
Scanner scanner = new Scanner(System.in); // System.in 키보드로부터 입력을 받는다. (표준 입력)

System.out.println("당신의 이름은 무엇입니까?");
name = scanner.nextLine();

System.out.println("당신의 성별은 무엇입니까? (남/여)");
gender = scanner.nextLine().charAt(0); // charAt() 문자열에서 제공해주는 메소드
[코드 해설]
▶ scanner.nextLine() 으로 "남자"라는 문자열 호출
▶ String 클래스의 charAt() 으로 "남자"라는 문자열에서 index 0인 첫번째 '남' 호출
▶ == charAt()에 위치를 지정하는 방법은 제일 앞의 문자부터 0으로 시작해서 1씩 증가하며 원하는 문자를 뽑아낸다.

 

// 같은 표현
gender = "남자".charAt(0);
[코드 해설]
▶ 입력값을 받지 않고 바로 호출, String은 new 로 만들지 않고도 바로 호출할 수 있는 유일한 클래스
▶ 0 : 0번째 문자를 말한다. >> 1로 바꿨을 경우 1번(두번째) '자'라는 문자가 호출

 

// String 클래스를 생성하고 charAt 메소드를 호출
gender = new String("남자").charAt(0);

 

System.out.println("당신의 이름은 무엇입니까?");
name = scanner.nextLine();

System.out.println("당신의 키는 몇 입니까?(소수점 첫째자리까지 입력하세요.)");
height = scanner.nextDouble();

System.out.println("당신의 성별은 무엇입니까? (남/여)");

scanner.nextLine();
gender = scanner.nextLine().charAt(0);

// 기본 자료형을 입력 받고 문자를 입력 받을 때는 scanner.nextLine(); 한번 더 !