-1

アマチュアのJavaラーナーとして、Javaコードと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

あなたがいるだけでシステム入力から1文字を読み込みます。これはファイルに書き込まれます(あなたの便宜のために 'Scanner'を使いたいかもしれません)。 – Mena

+0

@Menaどうすればいいですか?方法を提案できますか? –

+0

@Menaので、read()メソッドは一度に1文字ずつ読み込みますか?よく私はまだ私はforループを変更することができますかwhileループを使用する場合のようにシステム入力のread()メソッドを使用したいですか? –

答えて

1

あなたの誤差は入力を読み込むため

System.in.read() 

を使用しています。

System.in.readは1バイトの入力のみを読み取ります。

これに代わる方法として、スキャナを使用する方法があります。スキャナーは複数バイトの情報をスキャンすることができるので、自分が行っていることに対してより優れています。 )

Scanner scanner = new Scanner(System.in); 

2でSystem.in.readを置き換えます:

1)そのような新しいスキャナオブジェクトを作成します。

はあなたのコードを修正するに

scanner.next() 
関連する問題