Uckdown


excluido

Eu fiz assim:

public class Exemplo {

    public static void main(String[] args) {
        Exemplo programa = new Exemplo();
        programa.executar();
    }

    public void executar() {
        StdIO.println("INFORME OS DADOS:");
        double vh   = StdIO.readDouble("  Valor da remuneração por hora (VH): ", valor -> valor > 0);
        double hs   = StdIO.readDouble("  Horas semanais trabalhadas (HS):    ", horas -> horas > 0 && horas <= 44);
        double sb   = salarioBruto(vh, hs);
        double inss = inss(sb);
        double irrf = irrf(sb);
        double sl   = salarioLiquido(sb);

        StdIO.println("INFORMAÇÕES");
        StdIO.printf("  Valor da remuneração por hora (VH): %10.2f%n", vh);
        StdIO.printf("  Horas semanais trabalhadas (HS):    %10.2f%n", hs);
        StdIO.printf("  Salário Base (SB):                  %10.2f%n", sb);
        StdIO.printf("  Descontos (INSS):                   %10.2f%n", inss);
        StdIO.printf("  Descontos (IRRF):                   %10.2f%n", irrf);
        StdIO.printf("  Salário Líquido (SL):               %10.2f%n", sl);
    }

    private double salarioBruto(double vh, double hs) {
        return vh * hs * 4.5;
    }

    private double salarioLiquido(double sb) {
        return sb - inss(sb) - irrf(sb);
    }

    private double inss(double sb) {
        if (sb <= 1693.72) {
            return sb * 0.08;
        }
        if (sb <= 2822.90) {
            return sb * 0.09;
        }
        if (sb <= 5645.80) {
            return sb * 0.11;
        }
        return 621.03;
    }

    private double irrf(double sb) {
        if (sb <= 1903.98) {
            return 0;
        }
        if (sb <= 2826.65) {
            return (sb * 0.075) - 142.80;
        }
        if (sb <= 3751.05) {
            return (sb * 0.15) - 354.80;
        }
        if (sb <= 4664.68) {
            return (sb * 0.225) - 636.13;
        }
        return (sb * 0.275) - 869.36;
    }
}

Exemplo de saída ao executar o programa:

INFORME OS DADOS:
  Valor da remuneração por hora (VH): 12
  Horas semanais trabalhadas (HS):    40
INFORMAÇÕES
  Valor da remuneração por hora (VH):      12,00
  Horas semanais trabalhadas (HS):         40,00
  Salário Base (SB):                     2160,00
  Descontos (INSS):                       194,40
  Descontos (IRRF):                        19,20
  Salário Líquido (SL):                  1946,40

Observação:
A classe StdIO é uma classe utilitária que uso pra facilitar a entrada de dados pelo teclado e saída de dados no console, mas você pode fazer a entrada e saída como bem entender.
:slight_smile:

Que compilador você usa?
Qual erro que você teve?
Tem certeza de que copiou o fonte da classe StdIO corretamente?

Onde está escrito StdIO, você escreve System.out. :neutral_face:

System.out.println("INFORMAÇÕES");
System.out.printf(" Valor da remuneração por hora (VH): %10.2f%n", vh);
System.out.printf(" Horas semanais trabalhadas (HS): %10.2f%n", hs);
System.out.printf(" Salário Base (SB): %10.2f%n", sb);
System.out.printf(" Descontos (INSS): %10.2f%n", inss);
System.out.printf(" Descontos (IRRF): %10.2f%n", irrf);
System.out.printf(" Salário Líquido (SL): %10.2f%n", sl);

Bom, estou usando o BlueJ.
O programa da erro apenas nas partes StdIO, mesmo eu substituindo por System.out.println.
Erro em StdIO.println(“INFORME OS DADOS:”); Aparece a mensagem "Cannot find symbol - variable StdIO. (Não foi possivel encontrar o símbolo - Variavel StdIO.)

double vh = StdIO.readDouble(" Valor da remuneração por hora (VH): “, valor -> valor > 0);
double hs = StdIO.readDouble(” Horas semanais trabalhadas (HS):

Você está chamando algo que não existe: System.out.print.readDouble
O objeto System.out só possui métodos print e estes métodos são void, eles não retornam nada que permita você chamar um método readDouble.

Se você não quer usar o StdIO, utilize um BufferedReader ou um Scanner pra ler os dados.

É porque você não adicionou a classe StdIO ao seu programa. :sob:
Crie ela no BlueJ, copie o fonte dela que disponibilizei nos links.
Depois execute o método main da classe Exemplo, veja:

Mas está tudo aqui no fórum.
Qual a dificuldade em copiar o fonte da classe Exemplo e o fonte da classe StdIO?
Com todo o respeito, se você não consegue fazer um Ctrl+C e Ctrl+V de um código fonte, então sua dificuldade não é com programação nem com Java.
:wink: