2012-10-25 3 views
2

가능한 중복 : 다음 두 코드 조각에서
Scanner issue when using nextLine after nextInt스캐너 객체는 문자열 입력 대 정수에 대해 다르게 동작

, 내가 먼저 필요한 입력의 수를 요청하고 사용자를하자 특정 종류의 많은 입력을 입력하십시오. 필요한 입력이 String 타입 인 경우, s.next()를 먼저 사용하지 않으면 정수 입력이 적게 걸리는 반면 Integers의 경우 제대로 작동합니다. 나는 왜 그런지 이해하지 못한다. 누군가 설명해 주실 수 있습니까? 감사 문자열 입력과 꽵 기능

첫 번째 코드 : 정수 입력 및 nextInt 기능

public static void main(String args[]){ 

    Scanner s = new Scanner(System.in); 

    int num = s.nextInt(); 

    String[] inputs = new String[num]; 

    for (int i = 0; i < inputs.length; i++) { 
     inputs[i]=s.nextLine(); 
    } 
    System.out.println("end of code"); 
} 

두 번째 코드 :

public static void main(String args[]){ 

    Scanner s = new Scanner(System.in); 

    int num = s.nextInt(); 

    Integer[] inputs = new Integer[num]; 

    for (int i = 0; i < inputs.length; i++) { 
     inputs[i]=s.nextInt(); 
    } 
    System.out.println("end of code"); 
} 
+2

** 관련 질문 : ** [nextInt 이후 nextLine을 사용할 때의 스캐너 문제] (http://stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextint). –

+0

어 ... 나는 이걸 처음 보지 못했다. - \ –

답변

0

이 때문에 다음 줄입니다 :

int num = s.nextInt(); 

다음 INT는 \ n 문자가 될 때까지 INT 만 반환합니다.

이 같은 테스트 파일이 있다면 :

4 
1 
2 
3 
4 

과 같이 표시됩니다 귀하의 문자 코드 : 당신은 정수를 잡을 때

4'\n' 
1'\n' 
2'\n' 
3'\n' 
4'\n' 

그래서, 그것은을위한 4를 사로 잡고 당신의 " 스캐너의 nextInt() "메서드를 호출합니다. 다음 줄 "nextLine()"을 잡으라고하면, 그 줄의 나머지 부분을 잡고 '\ n'만 가져다가 배열의 첫 번째 값에 아무 것도 저장하지 않습니다.

반대쪽에서 다음 정수 "nextInt()"를 잡으라고 지시하면 다음 정수를 찾을 때까지 검색하여 1을 첫 번째 값으로 배열에 넣습니다.