Foro sobre Java SE > Arreglos entre clases
En esta línea:
public void fn_Sumar(String[] o Venta)
querrás decir:
public void fn_Sumar(Venta[] oVenta)
Guenas.
El metodo fm_Sumar espera que le llegue un array de Strings pero lo que le pasas es un array de Ventas
Define el metodo como
public void fn_Sumar(Ventas[] o Venta)
Un saludo
Otra cosa que tienes que tener en cuenta: si fn_Sumar tiene que devolver un valor, debes declararlo correctamente:
public Double fn_Sumar(Ventas[] oVenta) {
...
return Total;
}
Si estás empezando con Java, hay varias convenciones de nomenclatura que, cuanto antes te acostumbres a ellas, mejor. Un IDE no te las va a detectar, pero a quienes lean tu código les va a hacer que le piquen los ojos. :) Algunas que he visto en tu código:
- Esta es quizá lo más subjetivo y menos "convención": normalmente las clases deberían tener un nombre en singular porque definen un concepto. En lugar de "Ventas", un nombre más apropiado para tu clase podría ser "VentaMensual".
- Los nombres de métodos, propiedades y variables de una clase deben comenzar en minúscula: this.nombreMes, this.montoMes, total.
- En Java no se suele usar el subrayado ni para separar palabras en un identificador ni para comenzar identificadores:
public Ventas(String nombreMes, Double montoMes) {
this.nombreMes = nombreMes;
this.montoMes = montoMes;
}
public Double sumar(Ventas[] arrayVentas) {
...
}
También veo que, en lugar de Double, podrías querer usar BigDecimal, para no perder decimales por el uso de la coma flotante. Alguien de este portal escribió un excelente artículo sobre estos temas, pero no lo tengo aquí. Esto es un poco complejo de entender si acabas de comenzar a programar; apúntatelo para mirarlo más adelante, pero por ahora recuerda que, usando Double (y, en general, cualquier tipo de datos primitivo con decimales de la mayoría de los lenguajes, puedes encontrarte que 2.0 +2.0 = 3.999943392 en lugar de 4).
Por último, los métodos de instancia son "mensajes" al objeto de la clase donde defines el método y deberían interactuar con el objeto en cuestión. Si, como en tu ejemplo, fn_Sumar no interactúa con la instancia que recibe el mensaje, el método debería ser estático. De hecho, tú lo invocas bien (como método de la clase, no de un objeto concreto de ella), pero lo has definido mal y no compilará. Deberías definirlo así:
public static Double sumar(Ventas[] oVentas) {
...
}
e invocarlo con el nombre de la clase, como haces:
...
oResultado = Ventas.sumar(oVenta);
...
Buenos Dias
Les explico, estoy empezando en la programacion y decidi empezar con Java.
Soy autodidacta pero nunca se puede nada solo, tengo el siguiente problema
Tengo una clase Ventas con las propiedades NombreMes y MontoMes con su respectivo Set y Get.
Ahi mismo tengo un constructor con parametros y otro sin ellos.
Mas abajo tengo una funcion en donde deseo hacer un for iterando cada elemento de un arreglo pasado por parametro.
Esta es mi clase:
public Class Ventas {
String NombreMes = "";
Double MontoMes = 0;
public Ventas()
{
}
public Ventas(String _NombreMes, Double _MontoMes)
{
this.NombreMes = _NombreMes;
this.MontoMes = _MontoMes;
}
public void setNombreMes (String oNombreMes ) {
NombreMes = oNombreMes;
}
public String getNombreMes () { return NombreMes; }
public void setMontoMes (String oMontoMes) {
MontoMes = oMontoMes;
}
public String getMontoMes() { return MontoMes; }
public void fn_Sumar(String[] o Venta)
{
Double Total = 0;
for(int i=0; i<oVenta.lenght;i++)
{
Total += oVenta[i].getMontoMes();
}
return Total;
}
}
Ahora este es mi main ( no estoy seguro como se le llame)
import Ventas;
Double oResultado = 0;
Ventas[] oVenta;
oVenta = new Ventas[2];
Ventas oVentaTemporal;
oVentaTemporal = new Ventas();
oVentaTemporal.setNombreMes("Enero");
oVentaTemporal.setMontoMes(125.00);
oVenta[0] = oVentaTemporal;
oResultado = Ventas.fn_Sumar(oVenta);
La idea es pasar varios meses (Enero, Febrero, Marzo,.... consu monto para sumarlo), creo que no pasa el arreglo, nose como psarlo para en la clase ventas puede ejecutar la funcion.
Espero haberme explicado bien,
Gracias por cualquier ayuda.