-1

아마추어 자바 학습자로서 나는 자바 파일과 I/O 메소드의 다른 조합을 시도했다.이 코드를 어디에서든지 인쇄하려고했는데, 나는 내 코드를 통해 tom.txt 파일에 입력했다. 쉽게) 다른 방법을 사용하여 수행 할, 내 코드는 다음이었다내가 입력 한 전체 문자를 인쇄 할 수없는 이유는 무엇입니까?

import java.io.*; 
public class Dhoom3 
{ 
public static void main(String[] args) throws IOException, NullPointerException 
{ 
    FileWriter b = new FileWriter(new File("tom.txt")); 
    System.out.println(" enter whatever : "); 
    b.write(System.in.read()); 
    b.flush(); 
    System.out.println("the printed characters are"); 
    FileInputStream r = new FileInputStream("tom.txt"); 
    BufferedInputStream k = new BufferedInputStream(r); 
    int g; 
    while((g = k.read())!= -1) 
    { 
     System.out.println((char)g); 
    } 
} 

} 

내 출력했다이 :

enter whatever : 
stack 
the printed characters are 
s 
난 내 실수를 저지 않았거나 어디에서 내 프로그램을 수정해야

, 기본적를 내 코드가 첫 번째 문자 만 인쇄하는 이유는 무엇입니까?

+0

당신은 때에 만 시스템 입력에서 한 문자를 읽습니다.이 문자는 파일에 쓰여집니다 (사용자의 편의를 위해'스캐너 '사용). – Mena

+0

@ 메나 어떻게 수정해야합니까? 방법을 제안 해 주시겠습니까? –

+0

@Mena 그래서 read() 메서드는 한 번에 한 문자 씩 읽습니다. 글쎄 난 아직도 내가 사용하는 경우 또는 while 루프를 수정할 수 있습니다 시스템 입력에 대한 read() 메서드를 사용하려면? –

답변

1

귀하의 오류 입력을 읽어

System.in.read() 

을 사용하고 있습니다.

System.in.read는 1 바이트의 입력 만 읽습니다.

더 나은 대안은 스캐너를 사용하는 것입니다. 스캐너는 여러 바이트의 정보를 스캔 할 수 있으므로 수행중인 작업에 더 좋습니다.)

Scanner scanner = new Scanner(System.in); 

2와 System.in.read 교체 :

1)과 같이 새로운 스캐너 개체를 만듭니다

이 코드를 해결하려면

scanner.next() 
관련 문제