質問: '\n') { break } i++; } print(str); System.out.write('\n') } } }
回答: > > ・現在のプログラムだと、入力した文字のいちばん最初の文字が表示されません。 > > > ``` //強制終了されるまでループ while (System.in.read() == -1) { ``` この部分で1文字目を読み込んでいるためです。変数に格納されないため、この1文字目は消滅します。 > > ・5文字以上入力すると、5文字ずつ改行されてしまいます。5文字以上入力された > > 場合は、切り捨てられるようにしたいです。 > > > 5文字以上入力した場合、5文字目まで読んで読まれなかった文字は待機状態になります。次にread()が呼ばれた時に、待機していた文字が読み込まれます。read()は一文字ずつしか読まないため、「次に文字があるかどうか」を判断できません。そのため、切り捨てるという判断が出来なくなります。 どうしてもSystem.in.read()を使うというのなら、whileの無限ループ内にこの一連の作業を入れ込み、作業終わりに読み捨てを繰り返すしかないと思います。 ``` while (true) { // 文字読み込み、配列格納、表示 // 読み捨て while (System.in.read() != -1){} } ```