앞에서, 우린 문자와 숫자의 키보드를 입력할때의 처리과정을 알아보았다. 다음은, 문자열이다.

System.in.read() 부분은, 하나의 문자만을 입력, 저장, 출력을 했다. 그렇다면, 여러개의 문자로 구성된 문자열은 어떻게 되는가?

첫번째 방법은, byte 형의 배열을 사용하는 방법이 있다.
1//   import java.io.*;
2//    class Exam04_06{
3//        public static void main(String[] args) throws IOException{
4//            byte[] by = new byte[10];
5//            System.out.print("Subject = ");
6//            System.in.read(by);
7//            System.out.println("So, Subject = " + new String(by));
8//        }
9//    }
4번째 라인에서 byte 형의 배열 ny 를 선언하고, 6번째 라인에서 입력 받은 것을, 배열 by 에 저장한후, 7번째 라인에서 출력한다. 이건 나중에 배열 부분에서 알아보기로 하고, 두번째 방법으로 들어가 본다.

두번째 방법은 다음 구문을 사용하는 것이다.
BufferedReader in = new BufferedReader(new InputStreamReader(System.in))
이 구문을 사용한 코딩은 다음과 같다.
1//    import java.io.*;

2//    class Exam04_07 {
3//        public static void main(String[] args) throws IOException {
4//           BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

5//           String name = "";
6//           String age = "";

7//           System.out.print("Name = ");
8//           name = in.readLine();
9//           System.out.print("Age = ");
10//           age = in.readLine();

11//           System.out.println();
12//           System.out.println("Name = " + name);
13//           System.out.println("Age =" + age + " years old");
    }
}
4번째 라인에서 쓰인 구문은, 훗날 분석을 하기로 하고, 지금은, 단지, 구문 자체를 외우는게 나은 방법이다.

String 형의 변수를 선언, 초기화 시켜주고, 7번째 라인에서, 이름을 물으며, 입력을 받는다. 이 입력을 받아서 저장하는 역할을 하는게 8번째 라인이다.

in.readLine() 은, 문자열을 입력받아, 저장, 출력을 해주는데, 전에 배운, System.in.read() 와는 달리, .이 in.readLine() 은, 엔터키가 입력되기 전까지의 문자들을, 입력받아 저장시켜준다. 그래서, System.in.read() 에서 했던, 엔터키를 무력화시켜주는 기법이 여기서는 따로 필요가 없다.  또한 이 구문은, 위의 BufferedReader in 에서 가져와 in.readLine(); 으로 사용하고 있다. 만약 BufferedReader rys 라고 하면, rys.readLine() 이라고 바꿔줘야 할 것이다. 이를 이용하면, 앞에서 봤던 예제에서, 엔터키값을 없애기 위해 사용한 System.in.read() 를 사용안하고, 여기서 배운 내용으로, 코드를 수정, 보완할수가 있다.

하 지만 여기서도, 한가지 문제점이 발생한다. 바로, 여기서는 문자열만이 저장된다는 된다는 것인데, 숫자열을 하고 싶다면 어떻게 해야 하나. 물론, 위의 코딩대로 해도, 오류는 나오지 않는다. 다만, 이를 문자열로 저장하고, 문자로 인식하며, 쓸데없는 공간들을 낭비하는 문제가 따로 발생할뿐이다.

아무튼, 숫자열을 사용하고 싶다면?? 이때는 Wrapper 클래스라는 것을 사용한다.
1//    import java.io.*;

2//    class Exam04_08 {
3//        public static void main(String[] args) throws IOException {
4//           BufferedReader in = new BufferedReader(new InputStreamReader)(System.in));
      
5//           String imsi = "";
6//           byte a = 0;
7//           int b = 0;
8//           float c = 0.0f;
   
9//           System.out.println("Insert Numbers : ");
10//           imsi = in.readLine();

11//           a = Byte.parseByte(imsi);
12//           b = Integer.parseInt(imsi);
13//           c = Float.parseFloat(imsi);

14//           System.out.println("a = " + a);
15//           System.out.println("b = " + b);
16//           System.out.println("c = " + c);
    }
}
여 기서 11번째 라인서부터 13번째 라인까지가, Wrapper 클래스이다. 그래서 9번째 라인과 10번째 라인에서 문자열을 입력받은 후, 이 입력받은 값을, 숫자로 바꿔주는 역할을 하는게, 11번째 라인에서 13번째 라인까지의 Wrapper 클래스 이다.


p.s 위의 글들은, 김승현 강사님열혈강의 Java Programming 의 Round 4-3, 동영상 강좌에 기초한 내용입니다.
:
BLOG main image
아무거나 공부하자!!! by Young79

공지사항

카테고리

분류 전체보기 (79)
Programing (29)
English (31)
Graphic (4)
Saying on T"We"tter (15)

최근에 올라온 글

최근에 달린 댓글

글 보관함

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total :
Today : Yesterday :