#자바_3. 데이터 입출력_자바 언어 기본
사용자에게서 입력받은 값을 변수에 저장하여 연산 등에 사용하고
다시 그 결과를 출력하는 기능은 매우 기본적인 코딩이다.
c언어와 달리 자바에서는 객체라는 것을 사용하고 있고, 입력을 받을 때
Scanner 라는 클래스를 사용하게 된다.
숫자를 입력받을 때는 이 Scanner라는 클래스의 nextInt()라는 메서드를 호출한다.
이처럼 받아오는 데이터 타입에 따라 각기 다른 메서드를 사용하게 되는데,
메서드 | 데이터 타입 |
nextInt() | int |
nextDouble() | double |
nextBoolean() | boolean |
nextByte() | byte |
nextFloat() | float |
nextLong() | long |
nextShort() | short |
이처럼 필요에 따라 다르게 사용하면 된다.
간단한 예제를 통해 알아보자.
Scanner s = new Scanner(System.in);
System.out.println("첫 번째 숫자를 입력하세요. ");
int first = s.nextInt();
System.out.println("두 번째 숫자를 입력하세요. ");
double second = s.nextDouble();
double added = first + second;
System.out.println("두 숫자의 합은 " + added + " 입니다.");
이 예제는 정수와 실수를 받아와서 더하는 간단한 계산기이다.
맨 위에서 Scanner 클래스를 지정해준다.
그리고 아래에서 정수를 입력받을 때는, nextInt()를 사용해주고, 실수를 입력받을 때는 nextDouble()을 사용한다.
그럼 이렇게 두 입력값을 더한 결과가 보여진다.
그렇다면 문자열을 받아올 때는 어떻게 할까?
System.out.println("이름을 입력하세요. ");
String name = s.next();
System.out.println("이름은 " + name + " 입니다.");
문자열을 입력받을 때는 두 가지 사용이 가능하다.
nextLine() 과 next()이다.
근데 이거 문제가 있었다.
nextLine()
위의 정수와 실수를 받아오는 예제 아래에 nextLine()을 사용하여
문자열을 입력받으려고 했더니 println만 찍히고 종료되었다.
그래서 위의 예제를 주석처리하고 nextLine()만 사용하였더니 원했던대로 실행이 되었는데,
그 이유는 실수를 받아오면서 개행문자(enter)를 치면 개행문자를 nextLine()에서 받아와서
name 변수에 저장한다는 것이다.
이를 해결하기 위해서는 개행문자를 먼저 소비해주는
s.nextLine();
이런 부분을 넣어주어야하는데 매우 귀찮기 때문에 이런 문제가 생기지 않는 next() 를 사용하는 것이 좋겠다.