Java

Scanner, nextInt() 버그

유호야 2022. 8. 6. 15:44
반응형

문제의 코드

import java.util.*;

class Hello {
    public static void main(String args[]){
        Scanner scn = new Scanner(System.in);
        
        String arrs[] = new String[scn.nextInt()];
        
        for(int i = 0; i < arrs.length; i++) {
        	System.out.println(i +"번째 입력하실 차례입니다.");
        	arrs[i] = scn.nextLine();
        	System.out.println(arrs[i]);
        }
        
        for(int i = 0; i < arrs.length; i++) {
        	System.out.println(i+ "번째 : " + arrs[i] + ",");
        }
        
    }

 

Scanner 클래스의 nextInt() 메서드를 이용할 때 발생하는 버그이ㅏㄷ.

nextInt()를 받을 때 숫자와 함께

Enter 키를 저장하기 때문에 
그 다음에 오는 nextLine(); 에 Enter 키가 자동 입력된다고 한다. 

따라서 nextLine() 을 한 번 더 입력하거나, 
Enter 값을 버퍼에 저장하지 않도록 nextInt()를 nextLine()으로 받아서 
parseInt()로 바꿔주는 방법이 있겠다!

 

 

import java.util.*;

class Hello {
    public static void main(String args[]){
        Scanner scn = new Scanner(System.in);
        
        String no = scn.nextLine();
        
        String arrs[] = new String[Integer.parseInt(no)];
        
        for(int i = 0; i < arrs.length; i++) {
        	System.out.println(arrs[i]);
        	arrs[i] = scn.nextLine();
        }
        
        for(int i = 0; i < arrs.length; i++) {
        	System.out.println(i+ "번째 : " + arrs[i] + ",");
        }
        
    }
}

 

import java.util.*;

class Hello {
    public static void main(String args[]){
        Scanner scn = new Scanner(System.in);
        
        int no = scn.nextInt();
        scn.nextLine();
        String arrs[] = new String[no];
        
        for(int i = 0; i < arrs.length; i++) {
        	System.out.println(arrs[i]);
        	arrs[i] = scn.nextLine();
        }
        
        for(int i = 0; i < arrs.length; i++) {
        	System.out.println(i+ "번째 : " + arrs[i] + ",");
        }
        
    }
}
반응형