Eso es un problema por leer los números con nextDouble.
http://docs.oracle.com/javase/6/docs...l/Scanner.html Cita: When a scanner throws an InputMismatchException, the scanner will not pass the token that caused the exception, so that it may be retrieved or skipped via some other method.
Cuando introduces un caracter y falla en su conversión a número, el caracter continúa en buffer, por lo que cuando vuelves al origen del do, por no estar vacío el buffer el nextDouble se ejecuta automáticamente leyendo el valor erróneo otra vez.
Libera el buffer en caso de error
Cita: catch(Exception ex){
ok = true;
s.nextLine();
System.out.println("Valores formato Incorrecto");
}