메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 java 프로그래밍

뇌를 자극하는 java 프로그래밍 질의응답 게시판입니다.

죄송한데 질문하나 드릴께요...

2009-09-21

|

by 안녕하세요

1770

public class Test{
  public static void main(String[] args) throws Exception   {  
    int data=0;          //키보드에서 입력받은 데이터를 저장할 변수
    System.out.println("문자를 입력하세요. 끝내려면 [Ctrl]+Z를 누르세요.");
    data = System.in.read();       //System.in : 키보드와 연결되어 있는 통로       ------> 1)
    while(data != -1){   //더 이상 읽을 값이 없으면([Ctrl]+Z를 누르면) -1를 리턴
      System.out.print((char)data); //입력받은 값을 출력  System.out : 모니터와 연결되어 있는 통로    --------------> 2)
      data = System.in.read();     //System.in : 키보드와 연결되어 있는 통로
    }//while
}//main
}    





[실행결과]

문자를 입력하세요. 끝내려면 [Ctrl]+Z를 누르세요.

abcdefg

abcdefg

Java

Java

^Z





=================================================================================================



아무 생각없이 봤을때 참 쉬운 예문이구나...했는데 조금 생각해보니 너무 어려워졌습니다.

답변 부탁드립니다.





1)에서요   data = System.in.read();    여기서 in은 InputStream의 멤버 변수이고 read()는 InputStream의  메소드로서

한바이트를 읽어 들이는걸로 알고 있는데요.

실행결과를 보면 data에 한바이트가 아니라 입력한 모든 글자가 들어가는거 같습니다.

이게 어떻게 된거죠?

read();메소드를 반복문을 돌린것도 아니고 딱한번 실행했는데 여러문자를 한번에 저장하였는데,read()메소드는 분명

한바이트만 읽어들이는거 아닌가요?







2)에서요. System.out.print((char)data);

data를 한번에 찍어내는거 같은데요. char는 한문자, 한글자만 가능한걸로 알고 있는데...

(char)data 이게 가능한건가요?

data = "abcdefg" 이렇게 담겨져 있는거 같은데 (char)data 해서 한번에 찍어내는게 가능한가요?

(char)data 이렇게하면 분명 한문자만 찍혀야하는거 아닌가요?









답변 부탁드리고 감사합니다...

정말 감사드립니다.
댓글 입력
자료실