JAVA - System.in.read();와 Scanner (2022-07-07)

2022. 7. 8. 14:023층 1구역 - 개발의 장/JAVA

1. System. in .read ();

문자를 아스키코드 값을 기준으로 십진수로 표현해주는 명령어

 

2. 아스키코드??

출처 - https://shaeod.tistory.com/228

3. System. in .read ();의 활용

package inputs;

import java.io.IOException; //throws IOException와 import java.io.IOException;은 예외처리를 위한 구문

public class Ex2 {
	public static void main(String[] args) throws IOException{
		int data1, data2, data3;
		System.out.print("첫번쩨 데이터 입력 : ");
		data1 = System.in.read();
		System.out.println("첫번째 데이터 출력 : " + data1);
		System. in .read (); System. in .read (); /*문자 하나를 입력 받아 해당하는 정수형으로 변환
		 											엔터키를 누르면 엔터값이 출력되기 때문에 이를 없애기 위해
		 											System. in .read (); 2번 입력*/

		System.out.print("두번쩨 데이터 입력 : ");
		data2 = System.in.read();
		System.out.println("두번째 데이터 출력 : " + (char)data2); //char는 문자를 나타내기 위함.
		System. in .read (); System. in .read ();
		
		System.out.print("세번쩨 데이터 입력 : ");
		data3 = System.in.read();
		System.out.println("세번째 데이터 출력 : " + (int)data3); //int는 정수를 나타내기 위함.

	}

}

결과

첫번쩨 데이터 입력 : a
첫번째 데이터 출력 : 97
두번쩨 데이터 입력 : b
두번째 데이터 출력 : b
세번쩨 데이터 입력 : c
세번째 데이터 출력 : 99

 

4. Scanner의 활용

package inputs;

import java.util.Scanner; //Scanner를 사용하기 위한 구문.

public class Ex3 {

	public static void main(String[] args) {
		// Scanner : 자료형, 참조자료형
		// input : 변수이름, 참조변수, 담기는 값은 참조(주소)값
		// new : 메모리에 공간 확보 후 Scanner 클래스의 내용을 담음.
		// 기본 자료형 : int, char, boolen....
		Scanner input;
		input = new Scanner(System.in);
		System.out.println("참조 값" + input);
		
		System.out.print("데이터 입력 : ");
		String data = input.nextLine();
		System.out.println("입력 받은 데이터 : " + data);
		
		System.out.print("데이터 입력 : "); //데이터를 입력 하고 엔터를 친다.
		data = input.next(); //데이터를 접수 받는다. 테이터 입력시 '띈 공간'도 '엔터로 인식'하기 때문에 '데이터 입력' 이라는 데이터를 입력 했을 때, '데이터'만 출력.
		System.out.println("입력 받은 데이터 : " + data); //데이터를 출력한다.
		
		//문자열 입력 받을 떄 사용하는 메소드
		//input.next(); -->> 공백(space키)과 줄바꿈(enter키)을 입력 문자열의 끝으로 사용
		//input.nextLine(); -->> 줄바꿈(enter키)만 입력 문자열의 끝으로 사용
		
		//input.nextInt();
		//input.nextDouble();
		
		//input.nextByte();
		//input.nextShort();
		//input.nextLong();
		
		//input.nextBoolean();
		//input.nextFloat();
		
		
		
		
		
		/*
		 * 문자열 입력 받을 때 사용하는 메소드
		 * input.next(); --> 공백(스페이스)과 줄바꿈(엔터)을 입력 문자열의 끝으로 사용
		 * input.nextLine(); --> 줄바꿈(엔터)만 입력 문자열의 끝으로 사용
		 */
	}

}

4-1. Scanner를 활용한 예제

package inputs;

import java.util.Scanner;

public class Ex4 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수 입력 : ");
		int data = sc.nextInt();

		System.out.println("입력받은 데이터 : " + data);
		
		sc.close();
	}

}

 

 

package inputs;

import java.util.Scanner;

public class Ex5 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("체중 : ");
		double weight = sc.nextDouble();
		
		System.out.print("키 : ");
		float height = sc.nextFloat();
		
		System.out.println("체중 : " + weight);
		System.out.println("키 : " + height);
		sc.close();
	}

}

5. Quiz

1번 대문자를 입력해보고 그 대문자의 소문자로 변환해보세요.

문자 입력 : A
==== 출 력 ====
입력하신 문자 : A
소문자로 변환 : a

package inputs;

import java.io.IOException;

public class Quiz1 {

	public static void main(String[] args) throws IOException{
		char data;
		System.out.print("문자 입력 : ");
		data = (char) System.in.read();
		System.out.println("==== 출 력 ====");
		System.out.println("입력하신 문자 : " + data);
		System.out.println("소문자로 변환 : " + (char)(data+32));

	}

}

2번 어떤 사람의 국,영,수 점수와 합계를 구해보세요.

당신의 이름은 무엇입니까? : 홍길동
홍길동님의 국어 점수 : 100
홍길동님의 영어 점수 : 98
홍길동님의 수학 점수 : 70
==============
이름 : 홍길동
==============
국어 : 100
영어 : 98
수학 : 70
==============
합계 : 268
==============

package inputs;

import java.util.Scanner;

public class Quiz3 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("당신의 이름은 무엇입니까? : ");
		String name = sc.next();
		
		System.out.print(name + "님의 국어 점수 : ");
		int kor = sc.nextInt();
		System.out.print(name + "님의 영어 점수 : ");
		int eng = sc.nextInt();
		System.out.print(name + "님의 수학 점수 : ");
		int math = sc.nextInt();
		
		System.out.println("==============");
		System.out.println("이름 : " + name );
		System.out.println("==============");
		System.out.println("국어 : " + kor);
		System.out.println("영어 : " + eng);
		System.out.println("수학 : " + math);
		System.out.println("==============");
		System.out.println("합계 : " + (kor+eng+math));
		System.out.println("==============");
		
		sc.close();
	}

}