Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > AYUDA CON EJERCICIO JAVA SENCILLO!!!

Buenas que tal?

Mi nombre es Cesar y estoy en mi segundo mes de aprendizaje de este lenguaje y he tenido un pequenho problema con una aplicación del final de unos de los capítulos.

en fin la aplicación esta hecha completamente pero no me esta dando los resultados que quiero, he hecho los cálculos a lápiz y papel y me dan perfectos, pero en el código no, lo que me plantean que hagan es lo siguiente y abajo del planteamiento pego el código.

Desarrolle una aplicación en Java que determine el sueldo bruto para cada uno de tres empleados. La empresa
paga la cuota normal en las primeras 40 horas de trabajo de cada empleado, y paga cuota y media en todas las horas
trabajadas que excedan de 40. Usted recibe una lista de los empleados de la empresa, el número de horas que trabajó
cada empleado la semana pasada y la tarifa por horas de cada empleado. Su programa debe recibir como entrada esta
información para cada empleado, debe determinar y mostrar el sueldo bruto de cada empleado. Utilice la clase Scanner
para introducir los datos.


import java.util.Scanner;

public class SueldoTotal {

private int codigoEmpleado;
private double precioPorHora, totalHoras;

Scanner entrada = new Scanner(System.in);
public void ProcesarDatos() {
int codigo = 0;
int precioH = 0;
int totalH = 0;
while(codigo != -1) {
System.out.print("Introduzca el codigo del empleado o -1 para salir: ");
codigo = entrada.nextInt();
codigoEmpleado = codigo;

if (codigo != -1) {
System.out.print("Introduzca precio por Hora para este empleado: ");
precioH = entrada.nextInt();
precioPorHora = (double) precioH;

System.out.print("Introduzca Total horas trabajadas: ");
totalH = entrada.nextInt();
} // fin if

if (totalH <= 40) {
totalHoras = (double) totalH * precioH;
} // fin if
if (totalH > 40) {
int horasExtras = totalH - 40;
double mediaHC = (double) precioH / 2 * totalH;
double valorHorasExtras = horasExtras *= (double) precioH + mediaHC;
totalHoras = (double) totalHoras + valorHorasExtras;
} //fin else
} //fin while

} //fin metodo ProcesarDatos

public void obtenerDatos () {

if (totalHoras != -0) {
System.out.println();
System.out.print("*****************************************************************************");
System.out.println();
System.out.printf( "Sueldo Bruto:$%.2f\n", totalHoras );
} //fin if
else {
System.out.println();
System.out.println("*****************************************************************************");
System.out.println("No se introdujeron Datos para procesar (saliendo del programa...)");
System.out.println();
} //fin else
} //fin Metodo obtenerDatos
} // fin class


resultados qque obtengo al poner -1 para salir (BUENO)
resultados que obtengo al insertar por debajo de 40 (BUENO)
resultado que obtengo al insertar valor de horas por encima de 40 (INCORRECTO)

Bueno espero haberme explicado bien y me puedan asesorar, me interesaría mas si me dijeran como hacerlo, no que me lo hagan.

Gracias de antemano companheros...

febrero 25, 2013 | Registered Commentercrar

Buenas, en el calculo de las horas extra tienes un buen lio montado.

Deberias calcular primero el coste de las 40 horas al precio hora normal y a este sumarle las horas extra, que por lo que comentas tienen un valor de 1.5 el precio de hora normal.
Quedaria asi:

if (totalH > 40) {
// Price for fist 40 hours
totalHoras = 40 * precioH;
// Calculates price for extra hours
int horasExtras = totalH - 40;
double valorHorasExtras = horasExtras * precioH * 1.5;
// Total price
totalHoras = totalHoras + valorHorasExtras;
} // fin else

Un saludo

febrero 25, 2013 | Unregistered CommenterUnoPorAhi

Una solución alternativa

import java.util.Scanner;

public class CalculadoraDeSalario {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

int contador = 1;
double total = 0;

System.out.println("Calculadora de salario");
while(contador <= 3){
System.out.print("Ingrese sus horas trabajadas del empleado " + contador + ": ");
int horas = sc.nextInt();

System.out.print("Ingrese la tarifa por hora: ");
double tarifa = sc.nextDouble();

if(horas <= 0){
System.out.println("No cumple con las horas requeridas para recibir un salario");
}else if(horas <= 40){
total = horas * tarifa;
System.out.printf("Salario empleado %d: %.2f%n", contador , total);
}else{
total = (tarifa * 1.5) * horas;
System.out.printf("Salario empleado %d: %.2f%n", contador , total);
}
System.out.println();
contador++;

}

}
}

enero 7, 2024 | Unregistered CommenterFrancisco