문제

나는 Java.lang.readable (하나의 생성자 인수)을 사용하는 한 java.util.scanner를 사용하고 있으며, 다음과 같은 것들에 대해 잘 작동했습니다. 그러나 대신 InputStream을 사용하여 변경하면 Scanner.nextInt ()는 리턴하지 않습니다. 왜 그런지 아십니까?

InputStream의 구현은 다음과 같습니다.

private static class ConsoleInputStream extends InputStream {
    ...
    private byte[] buffer;
    private int bufferIndex;
    public int read() throws IOException {
        ...
        while (...) {
            if (buffer != null && bufferIndex < buffer.length) {
                return buffer[bufferIndex++];    // THE COMMENT!
            }
            ...
        }
        ...
    }
}

"12 n"등의 '1', '2', ' n'등과 같은 주석에 의해 데이터를 인쇄 할 때 나에게 알려지지 않은 스캐너 훅업이 있습니까? ?

도움이 되었습니까?

해결책

inputstream의 read () 메소드의 Javadocs에서 :

"반환 : 다음 바이트의 바이트 또는 스트림 끝에 도달하면 -1."

나는 당신이 결코 -1을 반환하지 않는 것 같아요?

다른 팁

문제는 자체 제작 된 입력 스트림에 문제가 있다고 생각합니다. 단순히 단순히 System.in을 사용하는 것이 아니라 직접 구축 했습니까?

업데이트:

jtextfield에서 입력을 원했습니다.

알았어. 일반적으로 I/O 핸들링을 사용하여 이미 사용할 수있는 내용을 문자 형식으로 읽는 것은 의미가 없지만 스캐너로 삶을 쉽게 할 수있는 방법을 알 수 있습니다.

그럼에도 불구하고, 당신은 아마도 "완성 된"입력 스트림을 사용하여 코딩과 슬픔을 저장했을 것입니다. 떠오르는 것은

InputStream is = new ByteArrayInputStream(myTextField.getText().getBytes());

Java I/O는 유키입니다. 태양의 밝은 사람들이 당신을 위해 대부분의 것을 캡슐화하게되어 기쁩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top