Autor Tema: Validar datos en Java crear método que reciba array o arreglo y realice suma  (Leído 1742 veces)

miguelmaxs

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Primero que todo hola a todos y gracias por leer. Lo que pasa es que estoy aprendiendo a programar con java y pues estoy comenzando (estoy a nivel de POO herencia e interfaces).

Estoy creando una clase que se llama Validaciones donde tengo métodos para validar datos. Así me ahorro código ya que en muchos ejercicios me piden que cree un array de objetos y que luego sume algun metodo del objeto del array o saque una media , o muestre algun metodo, asi que estoy intentando crear un método en mi clase validaciones para eso pero no sé cómo hacerlo. Esto sería un ejemplo de lo que quiero

Código: [Seleccionar]
public double genericoSumaArray (Object[] x , (aqui quiero poner x.getsueldo o algo asi)) {
      double cont=0;
      for (int fila=0;fila>x.length;fila++)
         cont=x[fila].(aqui quiero poner el getsueldo )+cont;
      return cont;
   }
« Última modificación: 18 de Abril 2021, 20:17 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Ayuda con JAVA = Como crear un metodo java que reciba....
« Respuesta #1 en: 25 de Febrero 2021, 01:24 »
Mmmhh, creo que te entiendo, pero me temo que no es posible. O yo al menos desconozco como hacerlo.

Tu idea es poder usar un método que reciba un array de clase Object, para poder aplicarlo a cualquier clase: Alumno, Comercial, Persona, Vehiculo,... ya que todos son hijos de Object.

Pero además, hacerle pasar también de algún modo el nombre del método que se ha de usar.
Si quieres sumar edades:
public double genericoSumaArray (Object[] x, getEdad() );
Si quieres sumar sueldos:
public double genericoSumaArray (Object[] x, getSueldo() );
Si quieres sumar el peso de una flota de Camiones:
public double genericoSumaArray (Object[] x, getPeso() );

Etc...

Bien, como idea, es genial... pero que yo sepa, no es posible.

De todos modos, respecto a sumar, siempre son valores int, o double, o float.
Son tipos primitivos, pero que tienen su equivalente en clase POO
int -> Integer
double - Double
float  -> Float

Así que puedes hacer que tu método genérico reciba simplemente el array Object, compruebe a que tipo de "instancia" pertenecen, castear el array a la clase  correspondiente y hacerla suma.

Este método te sirve para sumar enteros, dobles o float

Código: [Seleccionar]
public double genericoSumaArray (Object[] x) {
double suma = 0;

if (x instanceof Integer[]) {
Integer[] enteros = (Integer[]) x;
for (Integer numInt: enteros)
suma = suma + numInt;
}
else if (x instanceof Float[]) {
Float[] flotantes = (Float[]) x;
for (Float numFlo: flotantes)
suma = suma + numFlo;
}
else if (x instanceof Double[]) {
Double[] dobles = (Double[]) x;
for (Double numDob: dobles)
suma = suma + numDob;
}

return suma;
}

Así si por ejemplo quieres sumar calificaciones, pues en lugar de hacerle llegar un array de Alumno[], construyes un array de Float[] con las calificaciones.

O un Float[] con salarios, o un Integer[] con entradas de cine vendidas, o lo que sea que puedas necesitar.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".