import java.io.*; public class Deslizamiento { public static double distancia(double vi) { return Math.pow(vi,2.0) / (2.0 * 0.25 * 9.8 ); } public static void main(String[] args) { int frecuencia[ ] = {0,0,0,0,0,0,0,0,0,0}; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); double v , dist = 0.0; int x , contFueraRango = 0; do { v = 0.0; try { System.out.print("Ingrese velocidad : "); v = Double.parseDouble(in.readLine()); if (v >= 1.0 && v <= 10.0) { dist = distancia(v); x = (int) dist; frecuencia[x]++; } else System.out.println("velocidad fuera de rango..."); } catch (ArrayIndexOutOfBoundsException e ) { contFueraRango++; } catch(NumberFormatException ef) { /* en caso que se ingrese para la velocidad una cadena de caracteres o un formato no correspondiente a un numero */ System.out.println("Formato de Velocidad erroneo.."); } catch(IOException ioe) { System.out.println(ioe.getMessage()); } finally /* bloque finally se ejecuta siempre despues de los bloques try-catch */ { if (v >= 1.0 && v <= 10.0) System.out.println("Distancia(" + v + ") = " + dist); } } while(v >= 0.0); String s = "\nTabla de frecuencias\n--------------------\n"; for(int i = 0 ; i < frecuencia.length ; i++) { s += i + " ... " + (i+1) + " mts :\t" + frecuencia[i] + "\n"; } s += "10 ... + mts : " + contFueraRango; System.out.println(s); } }