4
respostas

Favor vejam se ficou bom. Valeu.

Olá. Os valores das alíquotas, descontos foram informados e os declareis nas variáveis, assim, caso ocorra alteração de valor é só editar o valor das variáveis. Fiz o código pedir o nome do funcionário e o valor do salário (não usar ponto nos centavos para inserir os dados, usar vírgula). Coloquei também uma condição para valores 'fora' do mínimo e máximo do enunciado. Ficou legal?

import java.util.Scanner;

public class TesteIR { public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String funcionario;
    double salario;     //o salário deve ser entre 1900 e 4664
    double aliquotaA = 7.5;
    double aliquotaB = 15;
    double aliquotaC = 22.5;
    double descontoA = 142.00;
    double descontoB = 350.00;
    double descontoC = 636.00;

    /*De 1900.00 até 2800.00 o IR é 7.5% - dedução R$ 142.00
     *De 2800.01 até 3751.00 o IR é 15% - dedução R$ 350.00
     *De 3751.01 até 4664.00 o IR é 22.5% - dedução R$ 636.00  */        

    System.out.println("Bom dia. Favor informar os dados para cálculo do IR e dedução do funcionário.");

    System.out.println("Nome do funcionário: ");
    funcionario = input.next();

    System.out.println("Use vírgula para os centavos. Informe o valor do Salário: ");
    salario = input.nextDouble();

    if (salario < 1900.00 || salario > 4664.00) {
        System.out.println("O valor declarado é maior ou menor que solicitado neste programa. Rever"
                + " este valor");}

    if (salario >= 1900 && salario <= 2800) {
        System.out.println("O salário é R$ " + salario + " e a alíquota é " + aliquotaA + "%, então a dedução é R$ " 
                + descontoA + " para o funcionário " + funcionario);}

    if (salario >= 2800.01 && salario <= 3751) {
        System.out.println("O salário é R$ " + salario + " e a alíquota é " + aliquotaB + "%, então a dedução é R$ " 
                + descontoB + " para o funcionário " + funcionario);}

    if (salario >= 3751.01 && salario < 4664.01) {
        System.out.println("O salário é R$ " + salario + " e a alíquota é " + aliquotaC + "%, então a dedução é R$ " 
                + descontoC + " para o funcionário " + funcionario);}

    input.close();
}

}

/*De 1900.00 até 2800.00 o IR é 7.5% - dedução R$ 142.00 *De 2800.01 até 3751.00 o IR é 15% - dedução R$ 350.00 *De 3751.01 até 4664.00 o IR é 22.5% - dedução R$ 636.00 */

4 respostas

Olá José,

Levando em conta o material que tem estudado, está muito bom.

Entender a lógica computacional é o mais importante na área de desenvolvimento e podemos ver que você entendeu o propósito das operações condicionais IF através do seu código.

Veja que há códigos que se repetem, isso não é um problema, mas só pra você ter em mente que eles pode ser encapsulados posteriormente em um novo método e você ir aos poucos ir melhorando seu código.

Bons estudos.

Oi Adriano. Obrigado pelo retorno.

Os códigos repetidos que você se refere são os textos resposta para os 'if's?

System.out.println("O salário é R$ " + salario + " e a alíquota é " + aliquotaA + "%, então a dedução é R$ "

            + descontoA + " para o funcionário " + funcionario);}

Exato José.

Você poderia posteriormente criar uma função que receba (salario, aliquotaA,descont A, funcionario) como parametros e teria como saída o texto.

Ou você poderia encapsular toda a parte do IF dentro de uma função CalcularIR(salario, aliquotaA,descont A, funcionario) e deixaria seu método "main" apenas pra ler os dados do usuário

Por aí vai .

Isso tudo, a título de sugestão, mas que com certeza você irá desenvolvendo ao passo do curso.

Bons estudos, espero ter ajudado e não confundido. :)

Ah! E se seu código está cumprindo seu objetivo, esse é um bom código, o resto é melhoria!