Java - error en pequeño programa en java

 
Vista:

error en pequeño programa en java

Publicado por federico (1 intervención) el 12/09/2017 04:46:44
hola que tal, diseñe un pequeño programa en java, en el que creo una clase llamada empleadoT y en el programa principal un array de este mismo tipo de datos, luego ingreso nombre y sueldo a cada uno de los elementos del array, antes de salir del primer bucle me tira el siguiente error.

Exception in thread "main" java.lang.NullPointerException
at principal.main(principal.java:15)

este es el codigo del programa principal

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
import java.util.*;
public class principal {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String nombre,nombreM;
		double sueldo,sueldoM;
		empleadoT array[] = new empleadoT[5];
		for(int i=0;i<array.length;i++) {
			System.out.println("ingrese nombre: ");
			nombre =scanner.nextLine();
			System.out.println("ingrese sueldo: ");
			sueldo =scanner.nextDouble();
			array[i].setNombre(nombre);
			array[i].setSueldo(sueldo);
		}
		sueldoM=array[0].getSueldo();
		nombreM=array[0].getNombre();
		for(int i=0;i<array.length;i++) {
		if(sueldoM < array[i].getSueldo()) {
			sueldoM=array[i].getSueldo();
			nombreM=array[i].getNombre();
		}
		System.out.println("sueldo mayor -->> "+sueldoM+" nombre -->> "+nombreM);
		}
	}
}


este es el codigo de la clase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class empleadoT {
private double sueldo;
private String nombre;
public empleadoT() {
	sueldo = 0;
	nombre = "";
}
public void setSueldo(double sueldo) {
	this.sueldo = sueldo;
}
public void setNombre(String nombre) {
	this.nombre = nombre;
}
public double getSueldo() {
	return sueldo;
}
public String getNombre() {
	return nombre;
}
}
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

error en pequeño programa en java

Publicado por Tom (1569 intervenciones) el 12/09/2017 10:04:35
Repasa algún tutorial básico de java. No estás creando los objetos de clase empleadoT que intentas "rellenar".
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
Imágen de perfil de Jose
Val: 130
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

error en pequeño programa en java

Publicado por Jose (46 intervenciones) el 14/09/2017 19:32:39
Hola, pues ampliando lo que te dijo tom, cuando creas un array de objetos, estas casillas se crean a null.
por lo tanto tenes que darle memoria (crear el objeto) para cada casilla de tu array. Lo cual tu no haces, y por eso el error de NullpointerException.

como imagino que eres algo nuevo en esto, todo lo que dijimos se resume en esto
array[i]=new empleadoT(); donde i es la posicion del array que quieres darle memoria

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
//tu código ya con la corrección, quedaria asi.
 
import java.util.*;
public class principal {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String nombre,nombreM;
		double sueldo,sueldoM;
		empleadoT array[] = new empleadoT[5];
		for(int i=0;i<array.length;i++) {
                        array[i]=new empleadoT();//aqui creas la memoria del objeto y se la asignas a la casilla del array que vas usar
			System.out.println("ingrese nombre: ");
			nombre =scanner.nextLine();
			System.out.println("ingrese sueldo: ");
			sueldo =scanner.nextDouble();
			array[i].setNombre(nombre);
			array[i].setSueldo(sueldo);
		}
		sueldoM=array[0].getSueldo();
		nombreM=array[0].getNombre();
		for(int i=0;i<array.length;i++) {
		if(sueldoM < array[i].getSueldo()) {
			sueldoM=array[i].getSueldo();
			nombreM=array[i].getNombre();
		}
		System.out.println("sueldo mayor -->> "+sueldoM+" nombre -->> "+nombreM);
		}
	}
}

bueno eso es todo, y tambien has lo que te dijo tom repasa los conceptos básicos de java, que sin ellos te vas a estar trabando a cada
rato.

saludos.
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