찬이욥
212
2022-03-12 20:10:27 작성 2022-03-12 20:21:11 수정됨
2
187

자바 문자열 자르기 질문


for문을 이용한 문자열 자르기 공부를 하는중에 질문이 있어서 질문글 올립니다.


Scanner sc = new Scanner(System.in);

String[] str;

for(int i=0; i<sc.nextInt(); i++)

{

str = sc.nextLine().split(" ");

System.out.printf(str[0],str[1]);

}

sc.close();


sc.nextInt()을 2로 입력했을 경우

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1"와 같은 오류가 뜹니다.  str[1]는 출력할수 없어서 저런 오류가 뜨는것 같은데

i=0일때 str에 공백이 자동으로 입력이 되고 바로 i=1일 경우로 넘어 가게 되는데 왜 그러는 걸까요???

0
  • 답변 2

  • Dierslair
    5k
    2022-03-12 20:51:37

    엔터를 칠 때 개행문자가 버퍼에 남아서 그렇습니다.
    nextInt() 후에는 버퍼를 비워주면 됩니다.

    https://stackoverflow.com/questions/10604125/how-can-i-clear-the-scanner-buffer-in-java

  • 찬이욥
    212
    2022-03-13 01:00:28

    Dierslair nextInt()에 개행문자가 남아서 그렇군요 감사합니다!!

  • 로그인을 하시면 답변을 등록할 수 있습니다.