Java - Duda con un error en java

   
Vista:

Duda con un error en java

Publicado por Alejandra Garcia (1 intervención) el 23/09/2017 21:49:49
Hola alguien me podría ayudar en como eliminar el error

-Exception in thread "main" java.lang.NullPointerException

Ese es mi codigo, al parecer marca null el valor hembra y macho en la comparación,pero no se como quitar el error.
El error sale asi;

Exception in thread "main" java.lang.NullPointerException
at principal.Animales.<init>(Animales.java:23)
at principal.NewAnimales.main(NewAnimales.java:16)

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
public class Animales {
 
    public String Nombre, Color, Longevidad, sexo;
    public static int numAnimales;
    public static int numMachos;
    public static int numHembras;
 
    //constructores
    public Animales(){
 
        numAnimales++;
        if (sexo.equals("Macho")) {
            numMachos++;
        }else
         numHembras++;
    }
 
    //metodos
    public void despliegaDatos(){
        System.out.println("Nombre: "+this.Nombre);
        System.out.println("Color: "+this.Color);
        System.out.println("Longevidad: "+this.Longevidad);
        System.out.println("Sexo:"+ this.sexo);
        System.out.println("Hasta Ahorita existen un total de: "+numAnimales+ " Animales");
        System.out.println("Hasta Ahorita existen un total de: "+numMachos+ " Machos");
        System.out.println("Hasta Ahorita existen un total de: "+numHembras+ " Hembras");
    }
}



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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
public class NewAnimales {
 
    public static void main(String[] args) {
        //objetos
        Animales Leon = new Animales();
        Animales Gato = new Animales();
        Animales Tigre = new Animales();
        Animales Perro = new Animales();
        Animales Hamster = new Animales();
        Animales Pez = new Animales();
        Animales Conejo = new Animales();
        Animales Tortuga = new Animales();
        Animales Pajaro = new Animales();
        Animales Serpiente = new Animales();
 
 
        Leon.Nombre = "Leon";
        Leon.Color = "Amarillo";
        Leon.Longevidad = "15 años";
        Leon.sexo ="Macho";
        Leon.despliegaDatos();
 
        Gato.Nombre = "Gato";
        Gato.Color = "Negro";
        Gato.Longevidad = "14 años";
        Gato.sexo ="Macho";
        Gato.despliegaDatos();
 
        Tigre.Nombre = "Tigre";
        Tigre.Color = "Blanco";
        Tigre.Longevidad = "15 años";
        Tigre.sexo ="Hembra";
        Tigre.despliegaDatos();
 
        Perro.Nombre = "Perro";
        Perro.Color = "Negro con Blanco";
        Perro.Longevidad = "16 años";
        Perro.sexo ="Hembra";
        Perro.despliegaDatos();
 
        Hamster.Nombre = "Hamster";
        Hamster.Color = "Naranja";
        Hamster.Longevidad = "10 años";
        Hamster.sexo ="Macho";
        Hamster.despliegaDatos();
 
        Pez.Nombre = "Pez";
        Pez.Color = "Azul";
        Pez.Longevidad = "4 años";
        Pez.sexo ="Hembra";
        Pez.despliegaDatos();
 
        Conejo.Nombre = "Conejo";
        Conejo.Color = "Negro";
        Conejo.Longevidad = "3 años";
        Conejo.sexo ="Hembra";
        Conejo.despliegaDatos();
 
        Tortuga.Nombre = "Tortuga";
        Tortuga.Color = "Verde";
        Tortuga.Longevidad = "50 años";
        Tortuga.sexo ="Hembra";
        Tortuga.despliegaDatos();
 
        Pajaro.Nombre = "Pajaro";
        Pajaro.Color = "Amarillo";
        Pajaro.Longevidad = "5 años";
        Pajaro.sexo ="Macho";
        Pajaro.despliegaDatos();
 
        Serpiente.Nombre = "Serpiente";
        Serpiente.Color = "Verde con negro";
        Serpiente.Longevidad = "15 años";
        Serpiente.sexo ="Macho";
        Serpiente.despliegaDatos();
 }
}
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

Duda con un error en java

Publicado por Krlos Kstro (31 intervenciones) el 23/09/2017 22:20:56
El error es que cuando creas los objetos,

1
2
3
4
5
6
7
8
9
10
Animales Leon = new Animales();
Animales Gato = new Animales();
Animales Tigre = new Animales();
Animales Perro = new Animales();
Animales Hamster = new Animales();
Animales Pez = new Animales();
Animales Conejo = new Animales();
Animales Tortuga = new Animales();
Animales Pajaro = new Animales();
Animales Serpiente = new Animales();

automáticamente llama al constructor

1
2
3
4
5
6
7
8
9
//constructores
public Animales(){
 
numAnimales++;
if (sexo.equals("Macho")) {
numMachos++;
}else
numHembras++;
}

El error es que no tiene datos para comparar...

conviértelo a un método

1
2
3
4
5
6
7
8
public void contarAnimales(){
 
numAnimales++;
if (sexo.equals("Macho")) {
numMachos++;
}else
numHembras++;
}

Lo llamas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Leon.Nombre = "Leon";
Leon.Color = "Amarillo";
Leon.Longevidad = "15 años";
Leon.sexo ="Macho";
 
Leon.contarAnimales();
 
Leon.despliegaDatos();
 
 
Gato.Nombre = "Gato";
Gato.Color = "Negro";
Gato.Longevidad = "14 años";
Gato.sexo ="Macho";
 
Leon.contarAnimales();
 
Gato.despliegaDatos();


Repites en el resto...

Cualquier duda me escribes a cgprognet@gmail.com

Visita:
https://www.facebook.com/cgcastroprognet/
http://programacionjavanetbeansccastro.blogspot.pe/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de TELPRO

Duda con un error en java

Publicado por TELPRO (11 intervenciones) el 23/09/2017 22:42:39
Hola Alejandra, he probado tu código. No soy experto en java, pero a mi parecer el error es que estas colocando las condiciones en el constructor. Los he puesto dentro de tu método despliegueDatos() y me ha funcionado. Queda asi...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void despliegaDatos(){
System.out.println("Nombre: "+this.Nombre);
System.out.println("Color: "+this.Color);
System.out.println("Longevidad: "+this.Longevidad);
System.out.println("Sexo:"+ this.sexo);
//COMIENZAN CONTADORES
              numAnimales++;
              if (sexo.equals("Macho")) {
                    numMachos++;
              }else
                    numHembras++;
//TERMINAN CONTADORES
System.out.println("Hasta Ahorita existen un total de: "+numAnimales+ " Animales");
System.out.println("Hasta Ahorita existen un total de: "+numMachos+ " Machos");
System.out.println("Hasta Ahorita existen un total de: "+numHembras+ " Hembras");
}

y el output, para no hacerlo tan largo, ya que fueron 10 animales los agregados:

//todos los animales sumando sus cantidades//...
Hasta Ahorita existen un total de: 10 Animales
Hasta Ahorita existen un total de: 5 Machos
Hasta Ahorita existen un total de: 5 Hembras


El constructor es para características especiales de clase,y es el primer método que se ejecuta, yo coloccocaría dentro de él:

1
2
3
4
this.Nombre=Nombre;
this.Color=Color;
this.Longevidad=Longevidad;
this.sexo=sexo;

A mi parecer, los contadores deberían ir dentro de un método, o en el método en donde rellenas los datos. De todas maneras, la comunidad aquí en LWP podrá echarle un vistazo también a tu código a ver que dicen.

Saludos, espero te funcione!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar