Notice
Recent Posts
Recent Comments
Link
«   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
Tags
more
Archives
Today
Total
관리 메뉴

mommy computer

입력함수(Scanner class, JOptionPane, Parsing) 본문

Programming/Java

입력함수(Scanner class, JOptionPane, Parsing)

Dahn 2016. 10. 24. 12:15

<입력함수(Scanner class, JOptionPane으로 데이터 입력받기)>

 

* 변수 = 데이터 대입 or 사용자로부터 데이터를 입력받아서 처리할 수 있음

  후자를 '실행 중 데이터처리(동적 데이터 처리)'라고 한다.

 

1. Scanner 클래스를 통해 데이터 입력받기

 

1) 형식 : Scanner sc = new Scanner(System.in); // Scanner클래스를 사용하겠다. (Scanner클래스 안에 메서드를 이용할 준비를 마치게 된다)

            이름              인스턴스

            객체              클래스를 사용할 수 있도록 준비    

 

         (객체).(메서드)(     );

         sc : 준비상태(new scanner)를 임의의 이름으로 등록하게 된다. Scanner클래스 안에 있는 메서드를 사용할 수 있게 된다.

         new Scanner(System.in).next(); //이렇게 써도 괜찮긴 하지만, 길기도 하고 메모리 낭비도 심해서 사용하지 않음

         메서드 : 클래스 안에 만들어놓는다. 실제 수행한 임무를 작성하게 된다. 필요할때마다 객체.메서드()형태로 사용하게 된다.

         Scanner는 입력받는 메서드를 모아놓은 클래스이다.

         클래스들을 모아놓은 곳을 라이브러리(Library)라고 한다.

 


2) Scanner 클래스의 사용
- 정수, 실수, 문자, 문자열 등을 입력받을 수 있는 기능
- 메서드 형태로 제공하고 있다.
- 우리의 목표는 Scanner 안에 있는 메서드를 꺼내어 쓰는 것!
  인스턴스를 객체에 등록해서 사용한다. 객체.메서드()형식으로 꺼내올 수 있다.


<순서>
- new : 인스턴스 만들때 사용
- new Scanner(); //스캐너 인스턴스가 만들어졌다.
  *()안에 System.in 이라고 써준다.
- Scanner sc; 객체(이름: 인스턴스를 사용하기 위한 이름. 변수만들기처럼 작명하면 됨)
- Scanner sc = new Scanner(System.in); sc라는 객체를 만들었다.
- 앞으로 sc를 통해서 Scanner가 보유하고 있는 메서드를 이용할 수 있다.
ex. sc.next(); "단어 입력받기"
    sc.nextInt(); "정수값 입력받기"
    sc.nextDouble(); "실수값 입력받기"
    sc.nextLine(); "문자 입력받기"

* 데이터를 입력받았다 = 리턴받았다
* 메서드는 동사에 해당한다.
  nextInt() 정수를 입력 받아라
  nextDouble() 실수를 입력 받아라
  이런 동사들을 Scanner클래스에 모와놨으니, 이런 동사들을 사용하려면 Scanner를 얼른 객체화시켜야 한다.

 






2. JOptionPane 클래스를 이용하는 방법
- 객체를 만드는 과정이 없다. 그럼 메서드를 어떻게 소환하지?
- 클래스가 메서드를 바로 부를 수 있다.
ex. JOptionPane.메서드() 형태로 사용
- 메서드가 한 가지밖에 없음. "대화상자를 열어서 데이터를 가져와!"
ex. JOptionPane.showInputDialog("안내문");

- 객체.메서드(): 인스턴스 메서드

   클래스.메서드(): 클래스 메서드(=static 키워드, static 메서드, 정적 메서드)

ex. 타입 변수 = JOptionPane.showInputDialog("국어점수");

    여기서 문제는 모든 대화상자의 입력값은 문자열이다.

    사실 서로 다른 장비(키보다, HDD, RAM 등) 간의 데이터 전송(통신)은

    모두 문자상태(byte단위)로 발생한다. 

    기본         정수화              실수화

    next()      nextInt()         nextDouble()

    따라서, JOptionPane.showInputDialog의 타입은 문자열("String")이다.

 

      String strKor = JOptionPane.showInputDialog("국어점수");  10입력

      String strEng = JOptionPane.showInputDialog("영어점수");  40입력

      syso(strKor+strEng); 1040이 출력된다.

 

    그래서, 특수한 문자열 "10", "111.1", "true" 데이터를 갖고 있는

    특수한 문자열은 알맹이만 빼와서 해당 타입을 변신시킬 수 있다.

 

3. JOptionPane에 담긴 문자열 정보의 데이터 타입을 바꾸는 방법(파싱)

 

    이렇게 문자열을 정수, 실수 등 기타 자료형으로 바꾸는 것을 "파싱(parsing; 문장분석)"이라고 한다.

 

    int 형으로 파싱하고 싶으면 Interger라는 클래스를 이용하면 된다.

    double 형으로 파싱하고 싶으면 Double이라는 클래스를 이용하면 된다.

    boolean 형으로 파싱하고 싶으면 Boolean, wrapper 등의 클래스가 있다.

 

    Integer.parseInt(); ()안에 문자열을 넣어주면 문자열이 정수형으로 바뀐다.

 

ex. Integer.parseInt("10");

    Double.parseDouble("3.14");

 

ex. String myAge = "34";

    Integer.parseInt(myAge);




Comments