2011-04-10 5 views
23

Java 6입니다. DataInputStream in = new DataInputStream(System.in);을 사용하여 사용자 입력을 읽습니다. readLine()이 사용되지 않는 경우. 사용자 가치를 읽으려면 어떻게해야할까요?DataInputStream은 readLine() 메소드를 사용하지 않습니다.

DataInputStream in = new DataInputStream(System.in); 
int num; 
try 
{ 
    num = Integer.parseInt(in.readLine()); //this works 

    num = Integer.parseInt(in); //just in doesnt work. 
} 
catch(Exception e) 
{ 
} 

readLine()이 지원되지 않을 때 설명해주십시오.

+0

다음에 컴파일 가능한 테스트 케이스 (또는 해당 오류가있는 테스트 케이스가 실패한 케이스)를 포함하십시오. –

+0

테스트 케이스? 우리는 비추천을 말하고 있습니다. 위의 코드를 편집기에 넣으면 선이 노란색으로 변하고 "readLine is deprecated"라고 말합니다. 아무도 Java 메소드가 사용되지 않는다고 말할 수있는 테스트 케이스가 필요 없다. 다음은 해당 경고입니다. https://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html#readLine() –

답변

29

InputStream은 근본적으로 이진 구조입니다. 텍스트 데이터 (예 : 콘솔에서)를 읽으려면 Reader 설명을 사용해야합니다. InputStreamReader으로 변환하려면 InputStreamReader을 사용하십시오. Reader 주위에 BufferedReader을 만들고 BufferedReader.readLine()을 사용하여 줄을 읽을 수 있습니다.

더 많은 대안 :

  • Console (System.console()에서 얻은) 및 Console.readLine
23

중단 전화 Scanner.nextLine

  • 사용 Scanner 내장 System.in 라운드를 사용하여 호출하고 대안은 이미 보통 javadocs에 명시 적으로 설명되어 있습니다. 그래서 그 대답을 찾는 첫 번째 장소가 될 것입니다. DataInputStream의 경우 here을 찾을 수 있습니다. readLine() 방법은 here입니다. 다음은 관련성을 보여줍니다.

    더 이상 사용되지 않은. 이 메서드는 바이트를 문자로 올바르게 변환하지 않습니다. JDK 1.1 현재, 텍스트 행을 읽는 가장 좋은 방법은 BufferedReader.readLine() 메소드를 사용하는 것입니다.

    DataInputStream d = new DataInputStream(in); 
    

    과 : 문자 인코딩은 다음 명시 적으로 지정할 수 있습니다

    BufferedReader d 
         = new BufferedReader(new InputStreamReader(in)); 
    

    변환 할 수있는 라인을 읽을 DataInputStream 클래스를 사용하는 프로그램의 형식 코드를 대체하여 BufferedReader 클래스를 사용하는 InputStreamReader의 생성자입니다.

    Java 1.5 이후 도입 된 Scanner도 좋은 (그리고 현대적인) 대안입니다.

  • 1

    아래 작동하지 않습니다

    num = Integer.parseInt(in); 
    

    대신 당신은 사용해야

    num = Integer.parseInt(in.readLine()); 
    

    readLine()는 줄 바꿈 할 때까지 라인의 입력을 읽습니다.

    관련 문제