2022. 7. 9. 19:37ㆍ3층 1구역 - 개발의 장/JAVA
1. 원인
2-2 코딩일지 작성하며 next와 nextLine메소드의 차이점을 설명하지 않았다.
나중에 참고하기 위해 게시글을 작성 하고자 한다.
2. 설명
next와 nextLine을 사용했던 예제를 보면...
package input;
import java.util.Scanner;
public class Ex3 {
public static void main(String[] args) {
// Scanner : 자료형, 참조자료형
// input : 변수이름, 참조변수, 담기는 값은 참조(주소)값
// new : 메모리에 공간 확보 후 Scanner 클래스의 내용을 담음.
// 기본 자료형 : int, char, boolen....
Scanner input;
input = new Scanner(System.in);
System.out.println("참조 값" + input);
System.out.print("데이터 입력 : ");
String data = input.nextLine();
System.out.println("입력 받은 데이터 : " + data);
System.out.print("데이터 입력 : "); //데이터를 입력 하고 엔터를 친다.
data = input.next(); //데이터를 접수 받는다. 테이터 입력시 '띈 공간'도 '엔터로 인식'하기 때문에 '데이터 입력' 이라는 데이터를 입력 했을 때, '데이터'만 출력.
System.out.println("입력 받은 데이터 : " + data); //데이터를 출력한다.
//문자열 입력 받을 떄 사용하는 메소드
//input.next();
//input.nextLine();
//input.nextInt();
//input.nextDouble();
//input.nextByte();
//input.nextShort();
//input.nextLong();
//input.nextBoolean();
//input.nextFloat();
먼저 nextLine 메소드을 사용하고, next 메소드를 사용했다. 이렇게 했을 때 결과는..
결과
참조 값java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\x{2c}][decimal separator=\x{2e}][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\QNaN\E][infinity string=\Q∞\E]
데이터 입력 : 안녕하세요 감사해요
입력 받은 데이터 : 안녕하세요 감사해요
데이터 입력 : 안녕하세요 감사해요
입력 받은 데이터 : 안녕하세요
nextLine은 엔터키만 입력 문자열의 끝으로 사용하기 때문에 데이터를 입력 했을 때,
적힌 데이터가 그대로 나왔다.
next는 공백(space키)도 문자열 끝으로 인식하기 때문에 데이터 입력시 공백 전까지의 데이터만 출력된다.
여기서 next와 nextLine의 메소드 위치를 바꾼 예제를 살펴보자.
package input;
import java.util.Scanner;
public class Ex3_1 {
public static void main(String[] args) {
// Scanner : 자료형, 참조자료형
// input : 변수이름, 참조변수, 담기는 값은 참조(주소)값
// new : 메모리에 공간 확보 후 Scanner 클래스의 내용을 담음.
// 기본 자료형 : int, char, boolen....
Scanner input;
input = new Scanner(System.in);
System.out.println("참조 값" + input);
System.out.print("데이터 입력 : "); //데이터를 입력 하고 엔터를 친다.
String data = input.next(); //데이터를 접수 받는다. 테이터 입력시 '띈 공간'도 '엔터로 인식'하기 때문에 '데이터 입력' 이라는 데이터를 입력 했을 때, '데이터'만 출력.
System.out.println("입력 받은 데이터 : " + data); //데이터를 출력한다.
System.out.print("데이터 입력 : ");
data = input.nextLine();
System.out.println("입력 받은 데이터 : " + data);
//next메소드가 엔터를 치며 실행은 되지만, 엔터값은 남아 있어 nextLine메소드가 실행될 때 엔터값을 인식
//즉, nextLine메소드를 먼저 사용한 후, next메소드를 사용하도록 해야한다.
//문자열 입력 받을 떄 사용하는 메소드
//input.next(); -->> 공백(space키)과 줄바꿈(enter키)을 입력 문자열의 끝으로 사용
//input.nextLine(); -->> 줄바꿈(enter키)만 입력 문자열의 끝으로 사용
//input.nextInt();
//input.nextDouble();
//input.nextByte();
//input.nextShort();
//input.nextLong();
//input.nextBoolean();
//input.nextFloat();
결과
위에서 말했지만 NextLine 메소드는 엔터값을 문자열 끝으로 사용한다. next 메소드를 실행하기 위해
엔터를 치면 실행하는 엔터값이 남아있어 그대로 nextLine 메소드 값에 영향을 준다.
따라서, 공백포함해서 뒷문장이 나오게 된다.
3.결론
next와 nextLine 메소드를 사용하기 위해선 next위에 nextLine 메소드를 우선적으로 이용해야
내가 원하고자 하는 데이터 값을 입력하고 출력이 가능할 것 같다.
'3층 1구역 - 개발의 장 > JAVA' 카테고리의 다른 글
JAVA - 연산자(2022-07-08) (0) | 2022.07.09 |
---|---|
JAVA - Scanner의 활용 예제 (2022-07-08) (0) | 2022.07.09 |
JAVA - System.in.read();와 Scanner (2022-07-07) (0) | 2022.07.08 |
JAVA - 변수와 자료형의 기본 개념 (2022-07-06) (0) | 2022.07.08 |
JAVA - JAVA의 툴, 출력과 주석과 사칙연산, ESCAPE문 (2022-07-06) (0) | 2022.07.08 |