본문 바로가기
BACK-END/JAVA

[자바 프로그래밍 기초] scanner 메소드 next(), nextLine()

by codechu 2025. 4. 16.

next(), nextLine() 의 차이점

 

이 둘은 scanner에서 사용하는 메소드들이다.

 

사실 무슨 차이인지 몰랐고 String 을 사용하면 nextLine() , int형을 사용하면 nextInt()를 사용하는 줄 알았음. 근데 과제 구현 중 모르고 넘어가면 안될 것 같아서 차이점을 적어봄.

 

 

※  문제 발생 : 계산기를 구현하는 과제 중 반복문으로 숫자 입력 , 연산 후 종료를 입력하면 반복문이 종료되며 계산기를 빠져나가는 단계를 하고 있었는데,

String end;

String end = sc.nextLine(); 

을 입력했더니  아무 글자를 입력하지 않아도 바로 다음  정수 입력부분으로 넘어가버림.

 

 

 

1.next() 기능 : 공백( 스페이스,탭,엔터) 전까지의 단어를 읽는다. / 공백을 기준으로 입력을 분리해 단어 단위로 읽음.

2.nextLine() 기능 : 한 줄 전체를 읽는다./ 엔터 키를 누를 때까지의 모든 입력을 포함해 한 줄 전체를 읽음.

 

 next()를 사용해서 사칙연산 입력을 받았는데 이때 값입력 + enter를 누르게 되면서 값은 입력되고 엔터 부분도 안에 남아버림

그래서 nextLine을 사용하면 위에 enter부분을 읽어버려서 바로 다음줄로 가는 것.

더보기
더보기
더보기
더보기
   char op = sc.next().charAt(0);
     if (op == '+') {
         System.out.println("결과 값 : " + (a + b));
     } else if (op == '-') {
         System.out.println("결과 값 : " + (a - b));
     } else if (op == '*') {
         System.out.println("결과 값 : " + (a * b));
     } else if (op == '/') {
         System.out.println("결과 값 : " + (a / b));
     }
     sc.nextLine();
     System.out.println("더 계산하시겠습니까? (exit 입력 시 종료)");
     String end = sc.nextLine();


     if(end.equals("exit")){
         System.out.println("종료되었습니다");
         break;
     }

}

 

char op = sc.next().charAt(0);

 여기 부분에 sc.next() 부분에 연산사 (+,-,*,/)중 하나를 입력 하고 엔터를 쳐서 연산자는 처리가 되고  엔터부분은 아직 남아있음.

그래서 if문이 끝나는 곳에 sc.nextLine()을 넣어줘서 저 엔터부분을 읽고 날려버림. 처리완료.

 

 

 

 

 

 

'BACK-END > JAVA' 카테고리의 다른 글

JAVA | 20251118 연산자  (0) 2025.11.19
JAVA | 20251117  (0) 2025.11.17
[자바] 계산기 과제 TIL  (0) 2025.04.23
[자바 프로그래밍 기초] 예외(Exception)와 예외처리 (try- catch)  (0) 2025.04.17
1. Java란 ?  (0) 2025.03.27