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 |