Uy que verde te veo...
A ver. Si lees el mensaje de error que te da el compilador:
unreported exception java.io.IOException; must be caught or declared to be thrown
System.in.read();
verás que se está quejando de que tienes que capturar o lanzar la excepción java.io.IOException que se puede dar por usar System.in.read()
Una excepción es una condición no esperada que podemos querer tratar, como dividir algo entre 0 o a la hora de intentar abrir un fichero que este no exista.
El método read de System.in puede producir una excepción de tipo java.io.IOException, que es el tipo de excepción relacionada con la entrada / salida (Input / Output).
Ergo. Lo que tienes que hacer, como te dice, es capturarla, usando un bloque try-catch o lanzarla, usando throws.
El bloque try catch funciona de la siguiente forma: el código que puede lanzar la excepción se coloca dentro del try. Ese código se intenta ejecutar, y si se da el caso de que se lance una excepción, se mira entre los catchs para ver si algún catch está intentado capturarla.
Para tu ejemplo lo que haríamos sería:
try {
char caracter = (char) System.in.read();
System.out.println("Introdujo " + caracter);
} catch(Exception e) {
e.printStackTrace();
}
Como ves se intenta hacer el read y después imprimir lo que el usuario introdujo. Si se produce alguna excepción (la clase Exception es padre de IOException, luego si se da una IOException, como IOException es también un Exception entraría aquí) escribimos algún código para indicarle al usuario el error, por ejemplo un println como un mensaje de error o lo que hago yo, usar el método printStackTrace del objeto Exception para mostrar la traza.