La Web del Programador: Comunidad de Programadores
 
    Pregunta:  59648 - ERROR: EXECPTION IN THREAD "MAIN" JAVA.IO.IOEXCEPTION
Autor:  guillermo rodriguez
hola... amigos les escribo desde Colombia. Soy muy nuevo, nuevo en esto del desarrollo en Java, y me he encontrado que tengo este problema al tratar de hacer un ejercicio de promedio, donde al ejecutar el programa me sale un error inesperado como el siguiente:

Exception in thread "main": controlador no valido.

at java.io.FileputStream.skip<Native Method>
at java.io.BufferedInputStream.skip<BuferedInputStream.java: 305>
at Pormedio.main<Promedio.java:30>

----------------------------CODIGO DE Promedio.java --------------------------------------------

import java.io.*;
import java.io.IOException;

public class Promedio{
public static void main(String args[])throws IOException
{
//face declaracion
int contador, promedio, total, calificacion;
//face inicializacion
contador = 1;
total = 0;

while(contador <= 10){
System.out.print("Teclee calificacion con letra: ");
System.out.flush();
calificacion = System.in.read();

if(calificacion == 'A')
total = total + 4;
else if(calificacion == 'B')
total = total + 3;
else if(calificacion == 'C')
total = total + 2;
else if(calificacion == 'D')
total = total + 1;
else if(calificacion == 'E')
total = total + 0;

System.in.skip(1);
contador = contador + 1;
}
//face terminacion
promedio = total/10;
System.out.println("El promedio del grupo es " +promedio);
}
}
---------------------------------------FIN---------------------------------------------------------------

Gracias por su ayuda espero prontas respuestas.

  Respuesta:  Francisco
import java.io.*;

class PruebaArbol
{
public static void main (String[] args) throws java.io.IOException
{
int promedio, total;
char calificacion;
total = 0;
BufferedReader bufer = new BufferedReader(new InputStreamReader(System.in));
//Podrias pedir el numero de promedios asi :
//System.out.print("Numero de promedios ? : ");
//int n = Integer.parseInt(bufer.readLine())
//y en el for cambiar 10 por esta variable n
for(int contador = 1; contador <= 10; contador++)
{
System.out.print("Teclee calificacion con letra: ");
calificacion = bufer.readLine().charAt(0);
switch(calificacion)
{
case 'A': total += 4; break;
case 'B': total += 3; break;
case 'C': total += 2; break;
case 'D': total += 1; break;
}
}
//y aqui tambien cambiar 10 por n
promedio = total / 10;
System.out.println("El promedio del grupo es " + promedio);
}
}

// fin

espero te sirva ... saludos !!