Java - Java necesito Ayuda

 
Vista:

Java necesito Ayuda

Publicado por Julian (24 intervenciones) el 19/08/2021 01:17:25
Saludos a todos. Necesito la ayuda de todos los miembros de esta comunidad sobre un enunciado de JAVA. Soy incapaz de obtener el último idAlumno y sumarle el número uno. ¿Cómo hago para obtener el último valor de algún número y/o código y/o ID? Otra consulta ¿Puede una clase controladora heredar atributos de otra clase? . Pego el enunciado y mi codificación. Espero la ayuda de todos. Gracias.

/*
Crear un nuevo proyecto en el cual realizar los siguientes puntos:
1. Crear en el paquete1 la clase clase Alumno con los siguientes atributos:
o idAlumno
o nombres
o apellidos
o cedulaIdentidad
o direccion
o telefono
- Crear en el paquete2 la clase Turno con los siguientes atributos:
o idTurno
o descripcion
- Crear en el paquete3 la clase en la cual se instanciarán las clases mencionadas
- Inicializar la clase Alumno con los datos personales de cada alumno (a través del Constructor)
- Inicializar la clase Turno con los siguientes datos: (a través del Constructor)
o idTurno= 1
o descripcion=MAÑANA
- Desplegar por pantalla dichos datos en el siguiente formato:
Mis datos son:
------------------
100
MARCELO PEREZ
4388900
JEJUI
495873

Datos del Turno:
---------------------
1
MAÑANA
/* Para esta impresión se usarán solo dos métodos, uno para la clase Alumno y otro para la clase Turno,
no se deben usar los métodos getNombres, getApellidos, getDireccion… etc desde el main… */

/* Crear otro objeto de la clase Alumno, al cual se le cargarán los datos de un compañero/a:
o idAlumno=sumarle 1 al último idAlumno (para el atributo idAlumno, obtener el último id y a éste sumarle 1)
- Agregar el atributo sexo a la clase alumno:
o sexo: int
- Cargarle valores según el sexo de cada alumno:
o Si alumno = FEMENINO cargar sexo=1
o Si alumno = MASCULINO cargar sexo=2
- Desplegar por pantalla los datos del Alumno. Desplegar la descripción del sexo de cada alumno:
o Si sexo=1 desplegar FEMENINO
o Si sexo=2 desplegar MASCULINO
o Validar que si sexo es <> a 1 y <> a 2, entonces deberá desplegar SEXO INCORRECTO
/* El despliegue de la descripción del sexo, y la validación de los valores del sexo, se harán en un método dentro de la clase Alumno, no en el main */





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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package Paquete1;
 
 
public class Alumno {
 
   int idAlumno;
   String nombres;
   String apellidos;
   int cedulaIdentidad;
   String direccion;
   int telefono;
   int sexo;
   public void cargaridAlumno(int idAlumno){
       this.idAlumno = idAlumno;
}
 
public int obteneridAlumno(){
     return idAlumno;
}
public void cargarnombres(String nombres){
      this.nombres = nombres;
}
public String obtenernombres(){
       return nombres;
}
public void cargarapellidos(String apellidos){
        this.apellidos= apellidos;
}
public String obtenerapellidos(){
       return apellidos;
}
public void cargarcedulaIdentidad(int cedulaIdentidad){
          this.cedulaIdentidad = cedulaIdentidad;
}
public int obtenercedulaIdentidad(){
    return cedulaIdentidad;
}
public void cargardireccion(String direccion){
this.direccion = direccion;
}
public  String obtenerdireccion(){
  return direccion;
}
public void cargarTelefono(int telefono){
this.telefono = telefono;
}
public int obtenertelefono(){
   return telefono;
}
public void cargarSexo(int Sexo){
this.sexo = sexo;
}
public int obtenerSexo(){
    return sexo;
}
public int desplegarsexo(int sexo){
   switch(sexo){
       case 1: System.out.println("FEMENINO"); break;
       case 2: System.out.println("MASCULINO");break;
       default: System.out.println("SEXO INCORRECTO");break;
   }
    return sexo;
}
 
    public static void main(String[] args) {
 
    }
 
}
package Paquete2;
 
 
public class Turno {
   int idTurno;
  String descripcion;
 
public void cargaridTurno(int idTurno){
  this.idTurno = idTurno;
}
public int obteneridTurno(){
   return idTurno;
}
public void cargardescripcion(String descripcion){
 this.descripcion = descripcion;
}
 
}
package Paquete3;
public class Principal {
    private int idAlumno;
    private String nombres;
    private String apellidos;
    private int cedulaIdentidad;
    private String direccion;
    private int telefono;
    private int idTurno;
    private String descripcion;
public Principal(int idAlumno,String nombres,String apellidos,int cedulaIdentidad,String direccion,int telefono){
idAlumno=0;
nombres="";
apellidos="";
cedulaIdentidad=0;
direccion="";
telefono=0;
}
public  Principal(int idTurno, String descripcion){
idTurno=0;
descripcion="";
}
 
 
 
 
 
 
public static void Main(String [] args){
Alumno Alumno1 = new Alumno();
Alumno Alumno2 = new Alumno();
Turno Turno1   = new Turno();
 
Alumno1.cargaridAlumno(100);
Alumno1.cargarnombres("Marcelo");
Alumno1.cargarapellidos("Perez");
Alumno1.cargarcedulaidentidad(4388900);
Alumno1.cargarcedulaIdentidad(0);
Alumno1.cargardireccion("Jejui");
Alumno1.cargartelefono(495873);
 
Turno1.cargaridTurno(1);
Turno1.cargadescripcion("MAÑANA");
 
 
System.out.println("Mis datos son: ");
System.out.println("------------------");
System.out.println(100);
System.out.println("MARCELO PEREZ");
System.out.println(4388900);
System.out.println("Jejui");
System.out.println(495873);
 
System.out.println("Datos del turno:");
System.out.println("------------------");
System.out.println(1);
System.out.println("MAÑANA");
}
}
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

Java necesito Ayuda

Publicado por Kabuto (1381 intervenciones) el 19/08/2021 11:54:55
¿Algo como esto no te funcionaría?

1
Alumno2.cargaridAlumno(Alumno1.obteneridAlumno() + 1);

Al margen de esto:

El método desplegarSexo() no hace falta ni que reciba, ni que devuelva, un valor int.
Solo tiene que evaluar el valor de su atributo, y mostrar el mensaje correspondiente

1
2
3
4
5
6
7
public void desplegarSexo(){
   switch(sexo){
       case 1: System.out.println("FEMENINO"); break;
       case 2: System.out.println("MASCULINO");break;
       default: System.out.println("SEXO INCORRECTO");
   }
}


Tus clases Alumno y Turno, no tienen constructores. Curiosamente se los has puesto a la clase Principal, de la que te comento ahora.

En el paquete3, la clase Principal que has puesto, no tiene porque tener los atributos de las otras dos clases, ni sus constructores...
Solo necesita un método main() para iniciar el programa y dentro de él, instanciar los objetos Alumno y Turno que se necesiten.


Dentro de este main(), los datos que se han de mostrar, se le han de pedir a los objetos instanciados. No vale usar varios System.out. mostrando datos que NO provienen de los objetos con los que se está trabajando.
El enunciado pide que para mostrar estos datos, no usemos los getter/setter de cada clase, si no que a estas clases les demos un método a cada una, para mostrar todos los datos de una sola vez.
Para esto, lo más habitual, es sobrescribir el método toString().
Este método lo heredan automáticamente TODAS las clases Java y podemos sobrescribirla para construir un String que muestre los datos de los atributos de la clase, con el formato que más nos guste.

No es obligatorio usar ese método, se puede crear uno propio y desplegar los datos con system.out's..., pero es "costumbre" dar uso al método toString().


Mira, te dejo un código de como lo habría hecho yo.

Paquete1, clase Alumno

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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package paquete1;
 
public class Alumno {
 
	private int idAlumno;
	private String nombres;
	private String apellidos;
	private String cedulaIdentidad;
	private String direccion;
	private String telefono;
	private int sexo;
 
	public Alumno(int idAlumno, String nombres, String apellidos, String cedulaIdentidad, String direccion,
			String telefono) {
		this.idAlumno = idAlumno;
		this.nombres = nombres;
		this.apellidos = apellidos;
		this.cedulaIdentidad = cedulaIdentidad;
		this.direccion = direccion;
		this.telefono = telefono;
	}
 
	public int getIdAlumno() {
		return idAlumno;
	}
 
	public void setIdAlumno(int idAlumno) {
		this.idAlumno = idAlumno;
	}
 
	public String getNombres() {
		return nombres;
	}
 
	public void setNombres(String nombres) {
		this.nombres = nombres;
	}
 
	public String getApellidos() {
		return apellidos;
	}
 
	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}
 
	public String getCedulaIdentidad() {
		return cedulaIdentidad;
	}
 
	public void setCedulaIdentidad(String cedulaIdentidad) {
		this.cedulaIdentidad = cedulaIdentidad;
	}
 
	public String getDireccion() {
		return direccion;
	}
 
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
 
	public String getTelefono() {
		return telefono;
	}
 
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
 
	public void setSexo(int sexo) {
		this.sexo = sexo;
	}
 
	public void mostrarSexo() {
		switch(sexo) {
		case 1:
			System.out.println("MASCULINO");
			break;
		case 2:
			System.out.println("FEMENINO");
			break;
		default:
			System.out.println("SEXO INCORRECTO");
		}
	}
 
	@Override
	public String toString() {
		String datos = "Mis datos son\n";
		datos += "-------------\n";
		datos += idAlumno + "\n";
		datos += nombres +  " " + apellidos + "\n";
		datos += cedulaIdentidad + "\n";
		datos += direccion + "\n";
		datos += telefono;
 
		return datos;
	}
 
}

Tiene un constructor para los atributos, excepto para sexo, ya que será un añadido posterior.

La cédula y el teléfono los he puesto como String. Se podrían poner como int, no importa demasiado en este caso. Pero por lo general, cuando un atributo no está destinado a realizar operaciones aritméticas con él (con el teléfono no vamos a hacer ni sumas ni restas...), suele ser mejor tratarlo como String aunque se trate de números.

Fíjate al final, que para mostrar los datos sobreescribimos el método toString, donde construimos una cadena con los datos que queremos mostrar y la retornamos.

Paquete 2, clase Turno
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
package paquete2;
 
public class Turno {
 
	private int idTurno;
	private String descripcion;
 
	public Turno(int idTurno, String descripcion) {
		this.idTurno = idTurno;
		this.descripcion = descripcion;
	}
 
	public int getIdTurno() {
		return idTurno;
	}
 
	public void setIdTurno(int idTurno) {
		this.idTurno = idTurno;
	}
 
	public String getDescripcion() {
		return descripcion;
	}
 
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
 
	@Override
	public String toString() {
		String datos = "Datos del Turno:\n";
		datos += "----------------\n";
		datos += idTurno + "\n";
		datos += descripcion;
 
		return datos;
	}
}

Como antes, constructor con atributos y sobreescribimos método toString para retornar los datos.

Paquete 3, clase Principal

En esta clase, como dije antes, no tiene que tener atributos ni constructores.
Solo un método main, donde instanciaremos objetos Alumno y Turno para trabajar con ellos.

Si que es importante hacer un import de las clases Alumno y Turno, ya que se encuentran en otros paquetes. Así que desde paquete3 no podemos ver estas clases, si no las importamos.

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
package paquete3;
 
import paquete1.Alumno;
import paquete2.Turno;
 
public class Principal {
 
	public static void main(String[] args) {
		//Inicializar la clase Alumno con los datos personales de cada alumno (a través del Constructor)
		Alumno alumno1 = new Alumno(111, "Kabuto", "San",
				"459023", "Avenida Aprender a programar", "878239011");
 
		//Inicializar la clase Turno con los siguientes datos: (a través del Constructor)
		Turno turno1 = new Turno(1, "MAÑANA");
 
		/* Desplegar por pantalla dichos datos
		 * Para esta impresión se usarán solo dos métodos,
		 * uno para la clase Alumno y otro para la clase Turno,
		 * no se deben usar los métodos getNombres, getApellidos,
		 * getDireccion… etc desde el main…
		 */
		System.out.println(alumno1); //Método toString de clase Alumno devuelve los datos
		System.out.println();
		System.out.println(turno1); //Método toString de clase Turno devuelve los datos
 
		/* Crear otro objeto de la clase Alumno,
		 * al cual se le cargarán los datos de un compañero/a:
		 * idAlumno=sumarle 1 al último idAlumno (para el atributo idAlumno,
		 * obtener el último id y a éste sumarle 1)
		 */
		Alumno alumno2 = new Alumno(alumno1.getIdAlumno()+1, "Sonia", "López",
				"4388900", "JEJUI", "495873");
 
		/* - Agregar el atributo sexo a la clase alumno:
		 * sexo: int
		 * - Cargarle valores según el sexo de cada alumno:
		 * Si alumno = FEMENINO cargar sexo=1
		 * Si alumno = MASCULINO cargar sexo=2
		 */
		alumno1.setSexo(1);
		alumno2.setSexo(2);
 
		/*
		- Desplegar por pantalla los datos del Alumno. Desplegar la descripción del sexo de cada alumno:
		Si sexo=1 desplegar FEMENINO
		Si sexo=2 desplegar MASCULINO
		Validar que si sexo es <> a 1 y <> a 2, entonces deberá desplegar SEXO INCORRECTO
		El despliegue de la descripción del sexo, y la validación de los valores del sexo,
		se harán en un método dentro de la clase Alumno, no en el main
		*/
		System.out.println();
		System.out.println(alumno2);
 
		System.out.println();
		System.out.print("Sexo del Alumno 1: ");
		alumno1.mostrarSexo();
		System.out.print("Sexo del Alumno 2: ");
		alumno2.mostrarSexo();
 
		System.out.println("\n\t\tFIN DE PROGRAMA");
 
	}
 
}

Fíjate que para mostrar los datos, nos basta con poner directamente el objeto Alumno o Turno dentro de un System.out.
Esto es porque ahora tienen el método toString() sobreescrito, y algunas instrucciones como el System.out, lo llaman ellos directamente sin que tengamos que hacerlo nosotros.

Es decir, podríamos haber escrito esto, invocando nosotros al método toString() que nos retorna la cadena con los datos:
1
System.out.println(alumno2.toString());

Pero con System.out no es necesario, cuando recibe un objeto que NO es una cadena, ya se encarga él de buscarle su método toString():
1
System.out.println(alumno2);


Espero haber aclarado dudas.
Si lo necesitas, sigue preguntando.
Un saludo.
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