컴공댕이 공부일지

230316 java의 입출력 (next와 nextLine) 본문

학교/객지프 정리

230316 java의 입출력 (next와 nextLine)

은솜솜솜 2023. 3. 16. 13:22
728x90

오늘은 자바에서 값을 입력받는 법을 배웠어요.

 

#next()와 nextLine() : nextLine의 엔터 먹어가기와 해결법.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		
		String code;
		int age;
		String name;
		
		System.out.println("학번 :");
		code = input.nextLine();
		
		
		
		System.out.println("나이 :");
		age = input.nextInt();
		
		//nextLine을 쓰면 엔터를 먹어가기때문에 넘어가버려!
		
		//해결법 1. 엔터 하나 먹어버릴 다른 넥스트라인 코드 작성!
		String temp = input.nextLine(); 
		
		
		
		System.out.println("이름 :");
		name = input.nextLine();
		//해결법 2. 그냥 넥스트라인 대신 넥스트를 쓰기!
		
		
		System.out.println(code + " " + age + " " + name + " ");
        
        input.close(); //스캐너 다 썼으면 닫아주면 조아~
	}
}

 

next() : 엔터 무시하고 입력받아

nextLine() : 한 줄 단위로 입력을 받아 엔터도 포함

                       \n을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문자열 리턴

 

nextInt()에 1234를 입력하고 Enter를 치면 버퍼에 1234\n이 존재한다.

이 때 nextInt()가 버퍼의 내용을 가져올 때 분리자를 제외하고 가져오기 때문에 1234만 가져옴.

그러면 버퍼에 \n이 남아있게 되는데 nextLine()은 공백과 개행문자(Enter)인 분리자를 포함하니깐 \n만 가져오고 프로그램이 종료되는 엔터 먹어가기가 발생.

 

그래서 nextLine은 한 줄 단위로 와라락 입출력이 가능해서, 공백 있는 스트링도 입력받을 슈 있어!

그래서 막  1 2 3 4 5 6 7\n 이렇게 공백이 있는 스트링도 nextLine을 활용하면 입출력이 됨.

728x90
Comments