Запрограммируй, чтобы знать заработную плату человека, который работает сверхурочные часы

Код, чтобы знать заработную плату человека, который они оплачивают ему сверхурочные часы, час спустя 40 оплачивается так: ((pagoxhora*horastrabajadas) +pagoxhora/2+pagoxhora) костлявая, что час спустя 41 оплачивают служащему как нормальный час больше половину нормального часа, оно не функционирует не каков будьте проблемой это код:

import java.util.Scanner;
class horasextras {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner entrada= new Scanner(System.in);
    long horasTrabajadas;
    long pagoxhora;
    long salario;

    System.out.print("Ingrese las horas trabajadas: ");
    horasTrabajadas=entrada.nextLong();
    System.out.print("Ingrese el pago por horas: ");
    pagoxhora=entrada.nextLong();

    if(horasTrabajadas<=40){
    pagoxhora=pagoxhora;
    }
    else{
    pagoxhora= (pagoxhora/2)+pagoxhora;
    }
    salario= horasTrabajadas*pagoxhora;
    System.out.println("El salario es de: "+salario);
}

}

Это отражает меня в консоли:

Введите утомленные часы в компьютер: 41

Введите оплату в компьютер в часы: 10

Заработная плата: 425

он должен бы быть: 415

este es el codigo y el resultado

0
задан 20.03.2018, 04:59
4 ответа

Формула, которую ты предлагаешь в вопросе, не совпадает с нею explicaciГіn, который ты делаешь despuГ©s, поэтому дает тебе результат, который не. Восток cГіdigo дает результат, который ты ищешь.

 public static void main(String[] args) {
    Scanner entrada= new Scanner(System.in);
    long horasTrabajadas;
    long pagoxhora;
    long salario;

    System.out.print("Ingrese las horas trabajadas: ");
    horasTrabajadas=entrada.nextLong();

    System.out.print("Ingrese el pago por horas: ");
    pagoxhora=entrada.nextLong();

    if(horasTrabajadas > 40){
        //calcula el salario de las primeras 40 horas
        long primerasHoras = 40 * pagoxhora;
        long precioHorasExtra = (pagoxhora/2)+pagoxhora;
        //calcula el salario de las horas extra
        long salarioHorasExtra = (horasTrabajadas - 40) * precioHorasExtra;

        salario = primerasHoras + salarioHorasExtra;//suma las dos cantidades
    }
    else{
        //menos de 40 horas trabajadas
        salario = pagoxhora * horasTrabajadas;
    }

    System.out.println("El salario es: " + salario);
}
0
ответ дан 24.11.2019, 00:50
  • 1
    Предлагает тебе добавить explicació n ests có я говорю, ты возвращенные она повлеклась за собой как низкого качества. Проверять CГіmo отвечать –  Jorgesys♦ 20.03.2018, 16:06

Давайте проверять твой код:

pagoxhora=entrada.nextLong(); //pedimos el pago por hora
if(horasTrabajadas<=40) // si las horas son menores a 40
    {pagoxhora=pagoxhora;} //hacemos que pagoxhora sea igual a pago por hora??? 
                           // para que??
else 
    {pagoxhora= (pagoxhora/2)+pagoxhora;} //o sea, si trabajo mas de 40 que cosa? 
                                          //no era el resto de lo que sobro de 40?
salario= horasTrabajadas*pagoxhora; //aca calculas el salario, cuan cualquier pago por hora.

Сейчас. сначала давайте упорядочивать алгоритм.
Мы Хотим оплату в час, и в действительности есть 2 платежей в час. один для менее чем 40, и другой для каждого часа, который преодолевал бы 40... тогда... в псевдокоде, был бы чем-либо подобным:

  • Мы Просим, чтобы оплата из-за часа
  • мы вычислили оплату за сверхурочный час (я оплачиваю в час * 1.5)
  • , Вычисляем утомленные часы над 40
  • Вычисляем заработную плату делая утомленные часы до 40 * оплата в час + утомленные часы над 40 * оплата за сверхурочный час

и в коде. был бы чем-либо подобным:

long pagoxhoraextra = 0;
int cantidadhorasextra = 0;
....
pagoxhora=entrada.nextLong();
pagoxhoraextra = (pagoxhora/2)+pagoxhora; // es lo mismo que pagoxhora * 1.5
if(horasTrabajadas>40)
{
    cantidadhorasextra = horasTrabajadas-40;
}
salario= (horasTrabajadas-cantidadhorasextra)*pagoxhora+cantidadhorasextra *pagoxhoraextra ;
1
ответ дан 24.11.2019, 00:50

Я новый в Java и учусь программировать таким образом, хоть бы подайте этот тебе cГіdigo. Привет.

package horasextra;
import javax.swing.JOptionPane; //libreria para usar mensajes de Dialogos
public class HorasExtra {
    private void ingresarDatos(){//metodo para pedir los datos
        long horasTrabajadas;
        long pagoPorHora,total;
        horasTrabajadas=Long.parseLong(JOptionPane.showInputDialog("Cuantas horas trabajo: "));//Pedimos las horas trabajadas por medio de un cuadro de dialogo.
        pagoPorHora=Long.parseLong(JOptionPane.showInputDialog("Pago por Hora Trabajada: ")); //Pedimos el pago por medio de un cuadro de dialogo.
        total=calcularTotal(horasTrabajadas,pagoPorHora);//enviamos los datos al metodo calcularTotal() para realizar las operaciones
        JOptionPane.showMessageDialog(null,"EL pago es de: "+total);
    }
    private long calcularTotal(long horasTra,long pagoHora){
    /*En este nuevo metodo resiviremos las horas trabajas y el pago por Hora y las definimos como horasTra y pagoHora para poder realizar las operaciones necesarias. */

        long pagoParcial,extra,pagoCompleto;
        if(horasTra>40){//si es mayor a 40
            pagoParcial=(40*pagoHora);//pago por las primeras 40 horas
            extra=(pagoHora+(pagoHora/2))*(horasTra-40); // pago por horas extras
            pagoCompleto=pagoParcial+extra;//sumas los dos pagos
            }
        else{
            pagoCompleto=horasTra*pagoHora; //sueldo por 40 o menos horas trabajadas.
        }
            return (pagoCompleto);   //retornamos pagoCompleto y se guarda en la variable total del metodo ingresarDatos().
    }
    public static void main(String[] args) {
        HorasExtra obj = new HorasExtra();//Creamos un objetos llamado obj para poder ingresar a los metodos de esta clase.
        obj.ingresarDatos();//ingresamos al metodo principal para obtener el resultado
    }

}
1
ответ дан 24.11.2019, 00:50
  • 1
    Ты мог бы издавать ответ объяснять больше твой solució n для того, чтобы был принят ответ –  Raul Cacacho 20.03.2018, 00:02
  • 2
    Я заношу в список, новый на странице, пробую объяснять больше, что я могу. привет –  Erick 20.03.2018, 00:18

Чтобы не меняться много ты cГіdigo ahГ - ты envГ - или возможная одна soluciГіn. BГЎsicamente ошибка estГЎ, в котором ты вычисляешь всю заработную плату в 1.5 вместо только, что ты выходишь за пределы их 40hs. Привет.

    import java.util.Scanner;
    class horasextras {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner entrada= new Scanner(System.in);
        long horasTrabajadas;
        long pagoxhora;
        long salario;
    System.out.print("Ingrese las horas trabajadas: ");
    horasTrabajadas=entrada.nextLong();
    System.out.print("Ingrese el pago por horas: ");
    pagoxhora=entrada.nextLong();

    if(horasTrabajadas<=40){
    salario= horasTrabajadas*pagoxhora;//salario normal
    }
    else{
    salario= (horasTrabajadas-40)*pagoxhora*1.5 + 40*pagoxhora;
    //este salario refleja el pago normal x 40hs + las horas extras que pagan    
    //1,5 veces
    }
    System.out.println("El salario es de: "+salario);
}

}
0
ответ дан 24.11.2019, 00:50