Buenas:
Ser posible que te de ese error pq lee los caracteres (la readchar()) en Unicode (que ocupan 2bytes).
Con lo que si que se puede hacer es con un readByte(), y luego creas una cadena con el byte (con el método constructor).
Saludos
byte valor[]= {'F'};//Inicializo y tal
String x;
DataInputStream input = new DataInputStream(System.in);
try
{
valor[0]=input.readByte();
}
catch (IOException e)
{
e.printStackTrace();
}
x = new String(valor);
System.out.print("El valor es "+x);
Este es un ejemplo y tal...