반응형

 

Scanner 사용

 

Class 안에 하단의 코드를 기입해야만 Scanner을 사용할 수 있다.

 

Scanner 이름 = new Scanner(System.in);  // System.in 은 키보드로 입력 받는다는 뜻
// ctrl + shift + o로 인해 위에 import 함.

String 변수명 = 이름.nextLine(); // 데이터를 입력 받음
String 변수명 = 이름.next();
int 변수명 = 이름.nextInt();

 

package kr.or.ddit.study02.sec03;

import java.util.Scanner;


public class CastExample01 {
	Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args) {
		CastExample01 obj = new CastExample01();
		obj.method1();
	}
	
	public void method1() {
		String str = sc.nextLine(); // 데이터를 입력 받음
		System.out.println("키보드로 입력 받은 값은 : " + str);
		
		/*
		 * 문자열 -> 문자
		 * String -> char
		 */
		char ch = str.charAt(0); // 0이 첫번째 문자열을 뜻함, 두번째 문자열로 변경 후 한 글자만 입력 시 오류.
		System.out.println("키보드로 입력 받은 첫번째 문자는 : " + ch);
	}
}

 

결과 화면

 

 

 

타입 변환

 

- 자동 타입 변환

: 작은 타입이 큰 타입으로 저장되는 경우 발생한다.

 

타입 변환

 

· 범위

byte < short < int < long < float < double

 

 

- 강제 타입 변환

: 큰 타입을 강제로 작은 타입으로 나누어 저장하는 경우 발생한다.

Wrapper class를 이용하여 변환할 수 있다.

 

변환 방법

변환 타입 사용 예
String -> byte String str = "10" ;
byte value = new Byte(str).byteValue ;
// byte value = Byte.parseByte(str) ;
// byte value = Byte.valueOf(str) ;
String -> short String str = "200" ;
short value = new Short(str).shortValue ;
// short value = Short.parseShort(str) ;
// short value = Short.valueOf(str) ;
String -> int String str = "300000000" ;
int value = new integer(str).intValue ;
// int value = Integer.parseInt(str) ;
// int value = Integer.valueOf(str) ;
String -> long String str = "4000000000000" ;
long value = new Long(str).longValue ;
// long value = Long.parseLong(str) ;
// long value = Long.valueOf(str) ;
String -> float String str = "12.345" ;
float value = new Float(str).floatValue ;
// float value = Float.parseFloat(str) ;
// float value = Float.valueOf(str) ;
String -> double String str = "12.345" ;
double value = new Double(str).doubleValue ;
// double value = Double.parseDouble(str) ;
// double value = Double.valueOf(str) ;
String -> boolean String str = "true" ;
boolean value = new Boolean(str).booleanValue ;
// boolean value = Boolean.parseBoolean(str) ;
// boolean value = Boolean.valueOf(str) ;

 

 

 

자동 타입 변환 예시

 

int -> double 변환

 

int 변수명1 = 90;
double 변수명2 = 변수명1 / 3.0; // int 타입 / int 타입의 경우 int 타입이기에 double로 변환되지 않음
// 그렇기에 3.0 또는 앞에 (double)로 실수 타입으로 변환해주어야 함.

 

package kr.or.ddit.study02.sec03;

public class CastExample02 {
	public static void main(String[] args) {
		CastExample02 obj = new CastExample02();
		obj.method1();
	}
	
	public void method1() {
		/*
		 * int type 
		 * 국어 영어 수학
		 * 점수 입력 해보기
		 */
		int kor = 90;
		int eng = 77;
		int math = 84;
		
		/*
		 * int sum 에 변수 저장해보기
		 */
		int sum = kor + eng + math;
		
		System.out.println("국어: " + kor);
		System.out.println("영어: " + eng);
		System.out.println("수학: " + math);
		
		System.out.println("총점: " + sum);
		
//		double avg = (double)sum / 3;
		double avg = sum / 3.0;
//		double avg = sum / 3; // int 나누기 int로 하여서 double로 바꿔줘야 함
		
		System.out.println("평균: " + avg);
	}
}

 

 

 

강제 타입 변환 예시

 

1. String -> char 변환

.charAt(몇번째 문자열인지)

 

// Scanner 사용
Scanner 명칭 = new Scanner(System.in);
String 변수명1 = 명칭.nextLine(); // 데이터를 입력 받음

// 기존 String을 char로 변환
char 변수명2 = 변수명1.charAt(0); // 0은 몇번째 문자열인지를 뜻한다.
// 프로그램은 0번째부터 존재하기에 0이 곧 처음을 이야기한다.

 

 

2. String -> int 변환

변환하지 않을 시 10 + 10이 1010으로 출력된다.

 

// Scanner 사용
Scanner 명칭 = new Scanner(System.in);
String 변수명1 = 명칭.nextLine(); // 데이터를 입력 받음

// 기존 String을 int로 변환
int 변수명2 = Integer.parseInt(변수명1); // 하단의 2가지를 대신 사용해도 된다.
// int 변수명2 = Integer.valueOf(변수명1);
// int 변수명3 = new Integer(변수명1).intValue();

 

package kr.or.ddit.study02.sec03;

import java.util.Scanner;

public class CastExample03 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		CastExample03 obj = new CastExample03();
		obj.method1();
	}
	
	public void method1() {
		String str = sc.nextLine();
		System.out.println("입력 받은 문자열은 : " + str);
		String str2 = str + 10;
		System.out.println("문자열에 10을 더한 값은 : " + str2);
		
		// 숫자로 바꿀 때
		int num = Integer.parseInt(str); // 문자열 String타입의 숫자를 int타입으로 변환해줌
		num = num + 10;
		System.out.println("숫자로 변환 후 10을 더한 값은 : " + num);
	}
}

 

결과 화면

 

 

3. String -> double 변환

 

// Scanner 사용
Scanner 명칭 = new Scanner(System.in);
String 변수명1 = 명칭.nextLine(); // 데이터를 입력 받음

// 기존 String을 double로 변환
double 변수명2 = Double.parseDouble(변수명1); // 하단의 2가지를 대신 사용해도 된다.
// double 변수명2 = Double.valueOf(변수명1);
// double 변수명2 = new Double(변수명1).doubleValue();

 

package kr.or.ddit.study02.sec03;

import java.util.Scanner;

public class CastExample03 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		CastExample03 obj = new CastExample03();
		obj.method4();
	}
	
	public void method4() {
		/*
		 * 키보드로 문자(double 형 데이터) 데이터를 입력받고
		 * 나누기 3 한 값을 출력 해보기.
		 */
		System.out.println("실수형 숫자를 입력하시오.");
		String str = sc.nextLine();
				
		double d1 = Double.valueOf(str);
		double result = d1/3;
		System.out.println("3으로 나눈 값은 : " + result);
	}
}

 

 

 

출력 메소드

 

아래와 같은 형식으로 쓰인다.

 

System.out.출력메소드 ;

 

1. println() 메소드

: 괄호 안의 내용 출력 후 행 바꿈

 

2. print() 메소드

: 괄호 안의 내용 출력

 

3. printf("형식문자열", 값1, 값2) 메소드

: 괄호 안의 첫번째 문자열 형식대로 내용 출력

 

 

- 형식문자열

 

형식 문자열의 종류

 

 

package kr.or.ddit.study02.sec04;

public class PrintExample {
	public static void main(String[] args) {
		// System.out.print() -- 줄바꿈 없음
		System.out.print("홍길동 ");
		System.out.print(" 34061 ");
		System.out.print(" 대전시 중구 계룡로 ");
		System.out.println();
		
		// System.out.println() -- 줄바꿈.
		// 단축키 syso
		System.out.println("홍길동 ");
		System.out.println("34061");
		System.out.println("대전시 중구 계룡로");
		
		// System.out.printf("형식지정문자열", 변수 리스트)
		// "형식 지정문자열"
		// "%[[-0]n]d 10진 정수
		// - : 왼쪽 정렬
		// 0 : 남은 왼쪽 빈공간에 0 채움
		System.out.printf("숫자 : %d 입니다.\n", 10000);
		System.out.printf("숫자 : %8d 입니다.\n", 10000);
		System.out.printf("숫자 : %-8d 입니다.\n", 10000);
		System.out.printf("숫자 : %08d 입니다.\n", 10000);
	}
}

 

결과 화면

 

 

 

+ System.in.read() 메소드

: 키보드에서 입력된 키보드를 읽는 메소드.

2개 이상 키가 조합된 한글을 읽을 수 없다.

=> Scanner로 문제를 해결했다.

 

반응형