2009-09-17 4 views
0

이 작동하도록 노력하고있어Java에서 hasNextLine을 사용하면 NextInt 다음에 NextLine을 읽지 않습니다.

 System.out.println("Please enter what SOCKET NUMBER you" + 
"wish to connect to"); 
      int sockname = Integer.parseInt(inFromUser.nextLine()); 

    System.out.println("Please enter what HOSTNAME you" + 
"wish to connect to"); 
    String hostname = inFromUser.nextLine(); 

문제는 내가 사용자 입력에 상관없이 호스트 이름을 얻을 수 없다는 것입니다. 나는 hasNext 또는 그 변종과 관련이 있다고 생각했지만 확실하지 않습니다. 이견있는 사람?

+0

호스트 이름은 무엇입니까? – akf

+0

inFromUser 란 무엇입니까? 스캐너를 사용하고 있습니까? sockname이 예상 한 것을 보유하고 있는지 확인 했습니까? 그렇다면 hostname은 다음 줄에 실제로 텍스트를 가져와야합니다. –

답변

3

nextLine() 다음에 입력 버퍼에 "\ n"이있을 수 있으므로 다음 호출이이를 읽고 반환합니다. int를 읽은 후 버퍼를 지워야합니다.

inFromUser.skip("\\n+"); 
1

java.io.BufferedReader에는 readLine() 메소드가 있습니다. 그것을 사용하십시오. Scanner.nextLine()을 사용하는 경우 위치가 개행 문자 바로 앞에 있으면 빈 문자열이 표시된다는 것을 알아야합니다. 그러나 다음 nextLine은 실제로 전체 텍스트 행을 반환합니다 (readLine과 동일).