Java - Exception in thread "main" java.lang.NumberFormatException: For input string: "dd"

 
Vista:

Exception in thread "main" java.lang.NumberFormatException: For input string: "dd"

Publicado por Channyke (1 intervención) el 01/12/2018 05:53:52
Hola, tengo el siguiente problema, mi programa funcionaba en eclipse pero de repente empezaron a aparecer unos letreros que decían algo de antiguos métodos y de repente mi programa ya no hace la opciones que le pido, me podrían ayudar? debo entregarlo la otra semana es URGENTE:

estos son los errores que me aparecen:
Exception in thread "main" java.lang.NumberFormatException: For input string: "dd"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Biblio.Biblioteca.main(Biblioteca.java:27)


Codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//Clase main
package Biblio;
 
 
 
import javax.swing.JOptionPane;
 
public class Biblioteca {
    public static void main(String []args) {
        int opc;
        int cont= 0;
        String autor;
        String titulo;
        int anio;
        String genero;
        Libro libro[]= new Libro[20];
        opc= Integer.parseInt(JOptionPane.showInputDialog("///Menu de biblioteca/// \n"
                + " 1. Agregar libro. \n "
                + "2. Buscar libro. \n "
                +"3. Editar dato del libro. \n"
                + " 4. Alquilar libro. \n"
                + " 5. Cargar. \n "
                + "6. Guardar. \n"
                + " 7. Salir. \n"));
        switch(opc) {
        case 1:
 
            cont=Integer.parseInt(JOptionPane.showInputDialog("Digite el libro que desea registar(Max 20 libros)."));
            for(int i=0;i<=cont;i++) {
            autor=JOptionPane.showInputDialog("Digite el autor del libro");
            titulo=JOptionPane.showInputDialog("Digite el titulo del libro");
            anio=Integer.parseInt(JOptionPane.showInputDialog("Digite el anio de publicacion"));
            genero=JOptionPane.showInputDialog("Digite el genero del libro");
            libro[i]= new Libro(autor,titulo,anio,genero);
            }
 
            for(int i=0;i<=cont;i++) {
            System.out.println("El libro "+libro[i].getAutor()+" con los datos "+libro[i].getTitulo()+" "+libro[i].getAnio()+" "+libro[i].getGenero()+"ha sido agregado correctamente");
            }
            break;
 
 
        }
    }
}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//Clase 2
package Biblio;
 
public class Libro {
	private String autor;
	private String titulo;
	private int anio;
	private String genero;
 
 
	//Metodos construcctores por sobrecarga.
 
	public Libro() {
		autor="";
		titulo="";
		anio=0;
		genero="";
		}
 
	public Libro(String aa, String t,int a,String g) {
		autor= aa;
		titulo=t;
		anio=a;
		genero=g;
	}
 
 
     //Getters and Setters.
 
	public String getAutor() {
		return autor;
	}
 
	public void setAutor(String autor) {
		this.autor = autor;
	}
 
	public String getTitulo() {
		return titulo;
	}
 
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
 
	public int getAnio() {
		return anio;
	}
 
	public void setAnio(int anio) {
		this.anio = anio;
	}
 
	public String getGenero() {
		return genero;
	}
 
	public void setGenero(String genero) {
		this.genero = genero;
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Exception in thread "main" java.lang.NumberFormatException: For input string: "dd"

Publicado por Kabuto (1381 intervenciones) el 01/12/2018 23:03:20
A ver, el error parece ser que en este dialogo, no estás tecleando un valor numérico que pueda ser convertido a int

1
cont=Integer.parseInt(JOptionPane.showInputDialog("Digite el libro que desea registar(Max 20 libros)."));

Si cuando te sale esa ventana, no digitas numéros, el programa fallará.

Aqui dice que se ha digitado las letras "dd"
1
Exception in thread "main" java.lang.NumberFormatException: For input string: "dd"

Puedes evitar que el programa se detenga en el caso de que no pongas numéros con un try catch, pero vamos, si no se meten números el programa no podrá computar lo que necesitas.

Algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
switch(opc) {
    case 1:
 
        try {
            cont=Integer.parseInt(JOptionPane.showInputDialog("Digite el libro que desea registar(Max 20 libros)."));
            for(int i=0;i<=cont;i++)
            {
                autor=JOptionPane.showInputDialog("Digite el autor del libro");
                titulo=JOptionPane.showInputDialog("Digite el titulo del libro");
                anio=Integer.parseInt(JOptionPane.showInputDialog("Digite el anio de publicacion"));
                genero=JOptionPane.showInputDialog("Digite el genero del libro");
                libro[i]= new Libro(autor,titulo,anio,genero);
            }
 
            for(int i=0;i<=cont;i++)
            {
                System.out.println("El libro "+libro[i].getAutor()+" con los datos "+libro[i].getTitulo()+" "+libro[i].getAnio()+" "+libro[i].getGenero()+"ha sido agregado correctamente");
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, solo digite números");
        }
        break;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar