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] + ",");
}
}
}
반응형