次のコードが最初の入力文字をスキップするように見える理由がわかりません。
import java.io.*;
import java.util.Arrays;
public class Input
{
public static void main (String args[])
{
try {
echo(System.in);
}
catch (IOException e) {
e.printStackTrace();
}
}
static void echo(InputStream stream) throws IOException
{
byte[] input = new byte[10];
char[] inputChar = new char[10];
int current;
while ((current = stream.read()) > 0){
stream.read(input);
int i = 0;
while (input[i] != 0) {
inputChar[i] = (char)input[i];
if (i < 9) {
i++;
}
else {
break;
}
}
System.out.println(Arrays.toString(inputChar));
}
}
}
入力を "1234567890" とすると、出力は "[2, 3, 4, 5, 6, 7, 8, 9, 0,]" になります。inputChar の最後の文字は空白のようです。ただし、input[9] にバイトを読み取らなかった場合は、ヌル文字 (ASCII 0) にする必要があります。長さが 10 文字未満の入力を与えると、inputChar の残りの位置に null 文字が表示されます。だから私はここで何が起こっているのか分かりません。