자바

JAVA STEP 6. INPUT

2023. 2. 3. 18:54
728x90

INPUT : 콘솔 입력

1. System.in.read()

  • read() 메소드 
  • System.out.print() 반대 기능
  • 불편함
  • 1byte 문자만 입력 가능(=한글 입력 불가능)
  • ex)
  •  
System.out.print("문자를 입력하세요 : "); //라벨
int code = System.in.read(); //사용자가 입력한 값을 읽어 code라는 변수에 넣는다.(하지만 문자 코드 값으로 들어감)
System.out.printf("%c\n", code); //문자 코드 값으로 변환하여 출력
System.out.printf("입력한 문자는 %c입니다. \n", code); //출력

실행결과

  • read는 사용자가 입력한 문자의 단 한개의 글자만 가져옴.
  • 즉, 여러개를 가져오려면 아래와 같은 코드를 반복하여야만 가능하다.
  •  
		System.out.print("문자 입력: ");
		
		int code = System.in.read();
		
		System.out.println(code);
		System.out.printf("%c\n",code);
		
		
		code = System.in.read();
		
		System.out.println(code);
		System.out.printf("%c\n",code);
		
		code = System.in.read();
		
		System.out.println(code);
		System.out.printf("%c\n",code);
		
		code = System.in.read();
		
		System.out.println(code);
		System.out.printf("%c\n",code);
		
		code = System.in.read();
		
		System.out.println(code);
		System.out.printf("%c\n",code);

실행결과

  • 만약 문자 입력에 a 한글자만 넣게 된다면?
  • 아래와 같은 결과가 나오게된다.
  • 그 이유는 : a를 입력하고 enter도 입력이 된 것인데. \r = 13을 의미하고, \n 10을 의미하여 해당 두가지가 출력이 되게 되는 것이다. 또한, 나머지 2개에 대한 입력이 없어 오른쪽 상단에 디버깅이 종료되지않고 실행되고 있는 상태가 지속되는 것을 볼 수 있다.

a만 입력하였을 경우

2. BufferedReader

  • System.in.read() 메소드를 보완하여 만든 것
  • 더욱 편리함.
  • ex)
  •  
package com.test.java;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ex12_BufferedReader {

	public static void main(String[] args) throws IOException {
		

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//BufferedReader를 사용하기위한 전처리 작업이라고 보면된다.
//BufferedReader의 클래스를 상속 받아 사용하는 것.

System.out.print("이름을 입력하세요 : ");
String msg = reader.readLine(); // 문자열 msg = 문자열을 받는 메소드를 선언
System.out.printf("안녕하세요. %s님. \n", msg);
System.out.print("아이디 입력: ");
String id = reader.readLine();
System.out.printf("어서오세요. %s님 비밀번호를 입력해주세요. \n", id);
String pwd = reader.readLine();
System.out.println("로그인이 완료되었습니다. 행복한 시간 보내세요!")
	}
}

실행 결과

  • 하지만, Buffered도 마찬가지로, 숫자를 자료형으로 입력받는 것이 아닌 문자형으로 받아들인다.
  • 그때 사용하는 예제를 보이겠다.
  • ex)
  •  요구사항] 사용자로부터 숫자를 2개 입력 > 두 수의 합을 구하시오. (연산과정도 같이 출력)
    • 1. 라벨 출력 (안내 메시지)
    • 2. 숫자 1개를 입력
    • 3. 라벨 출력
    • 4. 두번째 숫자 1개를 입력
    • 5. 두수의 합
    • 6. 연산과정 출력
package com.test.java;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ex12_BufferedReader {

	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
       
		System.out.print("첫번째 숫자를 입력하세요 : "); 	//1
					
		String input1 = reader.readLine(); //2
		int num1 = Integer.parseInt(input1); //문자형을 int형으로 변환
		
		System.out.print("두번째 숫자를 입력하세요 : ");	//3
		
			
		String input2 = reader.readLine(); //4
		int num2 = Integer.parseInt(input2);
		
		
		// 5. 합구하기
					
		System.out.printf("%d + %d = %d\n", num1, num2, num1+num2 ); //6
		
	}

}

 

실행 결과

 

3. Scanner

  • BufferedReader 클래스를 조금 더 보완하여 만듬.
  • ex) 
  •  
package com.test.java;

import java.util.Scanner;

public class Ex14_Scanner {

	public static void main(String[] args) {
		
		//입력 도구
		Scanner scan = new Scanner(System.in);
		
		System.out.print("이름: ");
		
		String name = scan.nextLine(); //reader.readLine()과 비슷
		
		System.out.printf("안녕하세요 %s님\n", name);	
		
		System.out.print("숫자: ");
		
		int num = scan.nextInt();
		
		System.out.println(num + 10);
		
	}

}

실행 결과

총정리

  • 문자 1개를 입력
    • int code = System.in.read();
  • 문자 1개를 입력
    • BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    • int code = reader.read();
  • 문자열 입력
    • BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    • String line = reader.readLine();
  • 문자열 입력
    • Scanner scan = new Scanner(System.in);
    • String line = scan.nextLine();
  • 숫자 입력
    • Scanner scan = new Scanner(System.in);
    • int num = scan.nextInt();
  • 주의할점 : scan.next***() 호출하고 바로 뒤에 nextLine()을 호출할 때
    • 앞의 next***()이 개행문자를 남겨버려서 그 다음 nextLine()이 새로운 값을 요구하는 대신에 남아 있는 개행문자를 처리하면서 그냥 넘어간다.
    • 해결방법 1 : scan.skip("\r\n");
    • 해결방법 2 : scan.nextLine(); 
728x90
저작자표시 비영리 변경금지 (새창열림)

'자바' 카테고리의 다른 글

JAVA STEP 8. Casting  (0) 2023.02.06
JAVA STEP 7. 카페 무인전산 시스템 만들기(기초)  (0) 2023.02.05
JAVA STEP 5. OUTPUT  (0) 2023.02.03
JAVA STEP 4. ESCPAE  (0) 2023.02.03
JAVA STEP 3. DataType  (0) 2023.02.02
'자바' 카테고리의 다른 글
  • JAVA STEP 8. Casting
  • JAVA STEP 7. 카페 무인전산 시스템 만들기(기초)
  • JAVA STEP 5. OUTPUT
  • JAVA STEP 4. ESCPAE
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 정보보안전문가
  • 웹개발
  • React
  • IT자격증
  • 백준
  • 웹개발자
  • 개발자
  • IT자격증공부
  • JavaScript
  • 알고리즘
  • ajax
  • 웹페이지
  • DB
  • jsp
  • DBA
  • 정보처리기사
  • 개발블로그
  • IT개발자
  • 프론트엔드
  • css
  • html
  • jquery
  • 백엔드
  • it
  • 정보처리기사필기
  • 코딩테스트
  • 자바
  • java
  • 데이터베이스
  • 앱개발자

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVA STEP 6. INPUT
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.