Foros del Web » Programación para mayores de 30 ;) » Java »

Metodo matematico, no regresa resultado.

Estas en el tema de Metodo matematico, no regresa resultado. en el foro de Java en Foros del Web. Buen dia amigos: tengo el siguiente main: import javax.swing.JOptionPane; public class TestNomina {/*abro 1*/ /** Creates a new instance of TestNomina */ public TestNomina() { ...
  #1 (permalink)  
Antiguo 25/03/2008, 19:55
360
 
Fecha de Ingreso: marzo-2002
Mensajes: 307
Antigüedad: 22 años, 1 mes
Puntos: 1
Metodo matematico, no regresa resultado.

Buen dia amigos:

tengo el siguiente main:

import javax.swing.JOptionPane;
public class TestNomina
{/*abro 1*/

/** Creates a new instance of TestNomina */
public TestNomina() { }

public static void main(String[] args)
{/*abro 2*/
String pregunta;
int diasTrabajados;
float sueldo;
float pagoPorDia;
String nombreEmpleado;
int numEmpleado;
String domicilio;
String puesto;
Nomina miNomina = new Nomina();
int salida;
float calcularSueldo;


do
{/*abro DO*/
pregunta = JOptionPane.showInputDialog(null,"Numero de Afiliacion", "NOMINA, MAZ PACK S.A.", JOptionPane.QUESTION_MESSAGE);
numEmpleado = Integer.parseInt(pregunta);
miNomina.setNumEmpleado(numEmpleado);
System.out.println(numEmpleado);

pregunta = JOptionPane.showInputDialog(null,"Nombre del Trabajador", "NOMINA, MAZ PACK S.A.", JOptionPane.QUESTION_MESSAGE);
nombreEmpleado = String.valueOf(pregunta);
miNomina.setNombreEmpledo(nombreEmpleado);
System.out.println(nombreEmpleado);

pregunta = JOptionPane.showInputDialog(null,"Domicilio del Trabajador", "NOMINA, MAZ PACK S.A.", JOptionPane.QUESTION_MESSAGE);
domicilio = String.valueOf(pregunta);
miNomina.setDomicilio(domicilio);
System.out.println(domicilio);

pregunta = JOptionPane.showInputDialog(null,"Puesto dentro de la Empresa", "NOMINA, MAZ PACK S.A.", JOptionPane.QUESTION_MESSAGE);
puesto = String.valueOf(pregunta);
miNomina.setPuesto(puesto);
System.out.println(puesto);

pregunta = JOptionPane.showInputDialog(null,"Cuantos dias trabajo", "NOMINA, MAZ PACK S.A.", JOptionPane.QUESTION_MESSAGE);
diasTrabajados = Integer.parseInt(pregunta);
miNomina.setDiasTrabajados(diasTrabajados);
System.out.println (diasTrabajados);

pregunta = JOptionPane.showInputDialog(null,"Sueldo Diario del Trabajador", "NOMINA, MAZ PACK S.A.", JOptionPane.QUESTION_MESSAGE);
pagoPorDia = Float.parseFloat(pregunta);
miNomina.setPagoPorDia(pagoPorDia);
System.out.println (pagoPorDia);

salida = JOptionPane.showConfirmDialog(null,"Deseas Continuar","NOMINA, MAZ PACK S.A.", JOptionPane.YES_NO_OPTION);

miNomina.imprimirComprobante();

}/*cierro DO*/

while (salida == JOptionPane.YES_OPTION);/*Termino el DO*/
}/*cierro 2*/


}/*cierro 1*/

y la siguiente clase:

public class Nomina/*Inicio de clase*/
{/*abro llave 1*/
/** Creates a new instance of Nomina */
public Nomina() { }
/*Declaro las variables Globales*/
private int numEmpleado;
private String nombreEmpleado;
private String puesto;
private String domicilio;
private float pagoPorDia;
private int diasTrabajados;
private float sueldoMenosImpuesto;
private float sueldo;
private float calcularSueldo;
private float sueldoTotal;
private float granTotal;


public void setAsignoArgumentos (int noEmpleado, String nombreEmp, String rango, float paga, int diasTraba, float sueldoMenos, float pago, float cSueldo, float sueldoT, float granT, String domi)
{
numEmpleado = noEmpleado;
nombreEmpleado = nombreEmp;
puesto = rango;
pagoPorDia =paga;
diasTrabajados = diasTraba;
sueldoMenosImpuesto = sueldoMenos;
sueldo = pago;
calcularSueldo = cSueldo;
sueldoTotal = sueldoT;
granTotal = granT;
domicilio = domi;
}

public void setNumEmpleado (int nEmpleado) {numEmpleado = nEmpleado;}
public void setNombreEmpledo (String Empleado) {nombreEmpleado = Empleado;}
public void setPuesto (String Categoria) {puesto = Categoria;}
public void setPagoPorDia (float pago) {pagoPorDia = pago;}
public void setDiasTrabajados (int dias) {diasTrabajados = dias;}
public void setDomicilio (String domi) {domicilio = domi;}
public void setSueldo (float sueld) {sueldo = sueld;}


public int getNumEmpleado (){return numEmpleado;}
public String getNombreEmpleado () {return nombreEmpleado;}
public String getPuesto () {return puesto;}
public float getPagoPorDia () {return pagoPorDia;}
public int getDiasTrabajados () {return diasTrabajados;}
public float sueldoMenosImpuesto () {return sueldoMenosImpuesto;}
public float getSueldo (){return sueldo;}
public float getCalcularSueldo () {return calcularSueldo;}
public float getSueldoMenosImpuesto () {return sueldoMenosImpuesto;}
public float getSueldoTotal () {return sueldoTotal;}
public float getGranTotal () {return granTotal;}

/*Metodos de la clase*/
public float sueldo (float sueldo)/*Calcula el sueldo Total*/
{
sueldo = sueldo * diasTrabajados;/*Tengo que ponerle que imprima si no, no refleja el resultado*/
/*AQUI HAY ERROR*/
}
public void calcularImpuesto()/*Calcula cuanto le queda del sueldo sin los impuestos*/
{
sueldoMenosImpuesto = (sueldo * 3)/100; /*le descuenta el 3%*/
}

public void calcularSeguro()/*Calcula cuanto queda del sueldo sin lo del Seguro*/
{
sueldoTotal = (sueldoMenosImpuesto * 5)/100;/*le descuenta el 5%*/
}
public void calcularBono()/*Calculara si el empleado tiene derecho a Bono*/
{
if (diasTrabajados > 15)
{
granTotal= sueldoTotal + 500;
}
if (diasTrabajados < 15)
{
granTotal = sueldoTotal;
}
}

public void imprimirComprobante ()
{
System.out.println("Numero de Afiliacion del Trabajador:" + numEmpleado);
System.out.println("Nombre del Trabajador:" + nombreEmpleado + ","+ "Puesto:" + puesto);
System.out.println("Dias Trabajados:" + diasTrabajados);
System.out.println("Sueldo Diario:" + pagoPorDia);
System.out.println("Domicilio del Trabajador:" + domicilio);
System.out.println("Tu sueldo es:" + sueldo);
System.out.println("Retencion de impuesto:");
System.out.println("Seguro:");
System.out.println("Bono de compensancion:");
System.out.println("Total de persepciones:");
}


}/*Cierro llave 1*/

en el metodo sueldo supuestamente calculo los dias trabajados por la cuota por dia esto me daria como resultado el sueldo del empleado, bueno el resultado si me la refleja siempre y cuando ponga un System.out.println (variable); y mande llamar el metodo desde el main pero si en otro metodo mando llamar todo los resultados que me gereneren los demas metodos simpre me arroja cero en cualquier circustancia, segun tengo entendido el resultado de: sueldo = sueldo * diasTrabajados quedaria guarado en la variable sueldo la cual podria llamar desde el main con una impresion de pantalla pero resulta que al igual que los demas procedimiento es cero ya he intentado de varias formas y no le encuentro manera, la forma original que tenia para ese metodo era el siguiente

public void calcularSueldo ()
{
sueldo= diasTrabajados * pagoPorDia;
}

pero lo he modificado para ver si quedaba de alguna menera y nada....


espero puedan orientarme, Gracias!

360.
  #2 (permalink)  
Antiguo 25/03/2008, 23:24
 
Fecha de Ingreso: octubre-2006
Mensajes: 51
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Metodo matematico, no regresa resultado.

HOla!

Primero que nada, debo decirle que al ver su mensaje me ha dado mucha flojera y estuve a punto de cerrarlo al ver tanto código, no resulta muy atractivo de esta forma.

Segundo, veo con lástima que se empeña en seguir cometiendo el mismo error.

En el susodicho método en cuestión, esta haciendo esto:

public float sueldo (float sueldo)/*Calcula el sueldo Total*/
{
sueldo = sueldo * diasTrabajados;/*Tengo que ponerle que imprima si no, no refleja el resultado*/

}

no se da cuenta de algo??? Ya lo aclaramos en el otro mensaje!!!!!!!!!!

tiene sueldo como parámetro y tiene una variable de miembro con el mismo nombre, al intentar hacer sueldo = sueldo * diasTrabajados le esta asignando a su variable locl sueldo el resultado!!!! y por esa razón al llamarla desde el main le devuelve CERO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

sea más cuidadoso en esos detalles
  #3 (permalink)  
Antiguo 26/03/2008, 15:32
360
 
Fecha de Ingreso: marzo-2002
Mensajes: 307
Antigüedad: 22 años, 1 mes
Puntos: 1
Re: Metodo matematico, no regresa resultado.

Haber por este otro lado, ese ultimo fue la ultima modificacion que hice pero originalmente el codigo es asi:

public float calcularSueldo ()
{
sueldo = pagoPorDia * diasTrabajados;
return sueldo;

}

segun yo el resultado de la suma de esas dos variables se queda guardada en la variable "sueldo", la cual la puedo seguir usando en otro metodos y no hay ningun problema, pero si trato de llamar la variable sueldo desde el main es ahi donde esta sigue estando con el valor cero, por lo tanto el resultado de la suma nunca queda almacenada y se pierde.
  #4 (permalink)  
Antiguo 28/03/2008, 20:54
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Re: Metodo matematico, no regresa resultado.

Hola compañero :),

El motivo sigue siendo el mismo... sugerido por WinDoctor...
variables locales por su ámbito.

Código:
    public static void main(String[] args)
    {/*abro 2*/
      String pregunta;
      int diasTrabajados;
      float sueldo; 
Allí está definido "sueldo" y le pertenece a main.

Código:
public class Nomina/*Inicio de clase*/
  {/*abro llave 1*/
    /** Creates a new instance of Nomina */
    public Nomina()
    { }
    /*Declaro las variables Globales*/
    private int numEmpleado;
    .......
    private float sueldoMenosImpuesto;
    private float sueldo; 
Allí está definido "sueldo" también y le pertenece a la clase Nomina.

Código:
public float calcularSueldo ()
{
sueldo = pagoPorDia * diasTrabajados;
return sueldo;

}
Allí usas sueldo ... pero cual ... el de main o el de Nómina ?
En ese caso estas usando el "sueldo" que le pertenece a Nómina, por que está en el ámbito de la función calcularSueldo() dentro de Nómina. Y el "sueldo" de main se queda con 0.

Espero haber aclarado un poco más la situación ¿?,

Saludos,

ps:

Un problema con tu ejemplo es que hay 2 sueldos, uno por aquí otro por allá.
De cual estas hablando en cada momento específicamente, cuando dices "sueldo"?
Un gran problema de ámbito; visible únicamente para avanzados en el lenguaje.

Última edición por HackmanC; 28/03/2008 a las 21:38 Razón: simplify !
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:54.