Duda con un Problema en Java

Iniciado por ChuiDui, 6 Julio 2016, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

ChuiDui

Hola, soy nuevo en el foro y tengo una pequeña duda, lo que pasa es que intentando resolver un problema, en el que me pedian ingresar una cantidad de elementos a procesar, para luego especificar la longitud de los elementos, los cuales no debian sobrepasarse de 1.30 ni ser menores a 1.20 y aqui el problema, el programa me deja ingresar la cantidad de elementos pero siempre he tenido problemas con los elementos float, al ingresar enteros no hay problema pero ingreso por poner un ejemplo un 1.22 y da error y si por algun motivo ingreso un numero mayor o menor o cualquier float, me sigue dando el mismo error.
Bueno dejo de lado tanta introduccion y les muestro el codigo fuente y mas abajo el error que me aparece al ejecutar el programa:


package If;
import java.util.Scanner;

public class while_if {
   public static void main(String[]ar){
      Scanner teclado_1=new Scanner(System.in);
      int x;
      int cantidad;
      int n;
      float largo;
      x=1;
      cantidad=0;
      System.out.println("Ingrese la cantidad de las piezas a procesar");
      n=teclado_1.nextInt();
      while (x<=n) {
         System.out.println("Ingrese la medida de la pieza: ");
         largo=teclado_1.nextFloat();
         if (largo>=1.20 && largo<=1.30){
            cantidad = cantidad +1;
         }
         x=x+1;
      }
      System.out.print("la cantidad de piezas aptas son: ");
      System.out.print(cantidad);
   }

}

---------------------------------------------------------
Error:
               Ingrese la cantidad de las piezas a procesar
2
Ingrese la medida de la pieza:
1.22
Exception in thread "main" java.util.InputMismatchException
   at java.util.Scanner.throwFor(Scanner.java:864)
   at java.util.Scanner.next(Scanner.java:1485)
Código (java) [Seleccionar]
[code=asm][code=java][/code][/code]
   at java.util.Scanner.nextFloat(Scanner.java:2345)
   at If.while_if.main(while_if.java:17)

AlbertoBSD

Por que no caturas mejor la cadena y luego le haces parse a float?

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

hectornunezrivas

#2
hola.
Bueno yo pienso que puedes agregar todo entre un TRY y CATCH para poder atrapar la excepción sin que tu programa deje de funcionar. Al igual deberías de checar si añadiendo un ELSE para que haga una operación sin tener que ponerlo dentro de un TRY

Azkto

A ver si te sirve


public class JavaApplication2 {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       // TODO code application logic here
       
       Scanner teclado=new Scanner(System.in);
       System.out.print("Ingrese nº de piezas:");
       int num=teclado.nextInt();
       int contador=1;
       int cantidad=0;
       while(contador<=num){
           System.out.print("Tamaño de la pieza: ");
           float tam=teclado.nextFloat();
           if(tam>=1.20 && tam<=1.30){
               cantidad++;
           }
           contador++;
       }
       System.out.println("La cantidad de piezas son: "+cantidad);
   }
   
}


Recuerda que los números en netbeans se introducen con comas, ej: 1,22

+ 1 Oculto(s)

utiliza las etiquetas GESHI. leete las normas del foro

saludos...