Welcome to

My Java Develop Space

Java portfolio from H.Y.Song Welcome to my development space!

2017년 3월 31일 금요일

[4] 입력 받기



용도: 사용자가 키보드로 입력한 데이터를 받아서 저장한다.
문법: (여러줄)
설명: import java.util.Scanner; 을 이용하여 java.util 에 있는 Scanner 클래스를 불러들인다. 그리고, Scanner 메서드 이름 = new Scanner(System.in); 으로 메서드를 생성한다. 그리고 (데이터 타입) (할당 이름) = (메서드 이름).next(데이터 타입)(); 으로 입력을 받는다. 필자는 메서드 이름을 주로 input 으로 하여 Scanner input = new Scanner(System.in); 으로 쓴다. 
                 int 는 int (할당 이름) = input.nextInt();
        double 은 double (할당 이름) = input.nextDouble();
        String 은 String (할당 이름) = input.next();
        String 은 String (할당 이름) = input.nextLine(); 
   *차이점: next(); 은 스페이스바를 문자 처리 하지 않고 스페이스 뒤의 문자는 무시해 버리지만, nextLine(); 은 스페이스바를 포함한 모든 문자열을 저장한다. 필자는 주로 nextLine(); 을 이용한다.
예제: 
import java.util.Scanner;
public class EX{
    public static void main(String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("숫자데이터를 입력하세요");
        int numdat = input.nextInt();
        System.out.println("숫자데이터를 입력하세요");
        String sdat = input.nextLine();
        System.out.println("저장된 데이터: " + numdat + ", " + sdat);
    }
}

오류: 그런데 이렇게 작성을 하였을때 String에서 받는 데이터는 아무것도 없게 된다. 이유는 int 에서 받은 엔터를 문자처리 하여 sdat 공간에 넣어버리는 것이다. 그렇기 때문에 제대로 된 입력을 받기 위해서는 Integer 라는 클래스 메서드를 이용해야 한다. 새로운 예제는 이러하다: 

import java.util.Scanner;
public class EX{
    public static void main(String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("숫자데이터를 입력하세요");
        String ndat = input.nextLine();
        int numdat = Integer.parseInt(ndat);
        System.out.println("문자데이터를 입력하세요");
        String sdat = input.nextLine();
        System.out.println("저장된 데이터: " + numdat + ", " + sdat);
    }
}

이렇게 하면 Integer.parseIntndat 의 숫자값을 추출해 내어 numdat 에 저장하게 된다. 물론 엔터는 문자처리를 하지 않는다.


출력 결과: 
숫자데이터를 입력하세요
123
문자데이터를 입력하세요
abcd
저장된 데이터: 123, abcd

Process finished with exit code 0

Hello! I am a beginning developer of Java. My goal of Java develop is creaing my own Java OS. I am working on Open Source Alps Projeect with Java. Also I am writing course for other beginners in Java so that they could learn easier.

0 개의 댓글:

댓글 쓰기

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.