import java.text.DecimalFormat;
import java.util.Locale;
import java.util.Scanner;
public class CalculaIrrfPF {
static final Double ALIQUOTA_INSS_PARTE_SEGURADO = 11.0;
static final Double VALOR_MAXIMO_CONTRIB_INSS_SEGURADO = 713.09; //Teto do INSS
static final Double MENOR_RETENCAO_IR = 10.0;
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
System.out.println("Informe o valor do Pagamento: ");
Double valorPagamento = sc.nextDouble();
if(valorPagamento <= 0) {
System.err.println("Valor Inválido");
System.exit(1);
}
Double retencaoInss = valorPagamento * (ALIQUOTA_INSS_PARTE_SEGURADO/100);
/* Abaixo o teste para verificar se a retenção ultrapassou o teto, caso tenha ultrapassado, o valor da retenção
* torna-se o teto */
if(retencaoInss > VALOR_MAXIMO_CONTRIB_INSS_SEGURADO) {
retencaoInss = VALOR_MAXIMO_CONTRIB_INSS_SEGURADO;
}
Double baseCalculoIrrf = valorPagamento - retencaoInss;
Double aliquotaIrrf = 0.0;
Double deducaoIrrf = 0.0;
//Condições abaixo verificam a faixa do IR para definir aliquota e dedução.
if(baseCalculoIrrf < 1903.98) {
aliquotaIrrf = 0.0;
deducaoIrrf = 0.0;
} else if(baseCalculoIrrf >= 1903.99 && baseCalculoIrrf < 2826.65) {
aliquotaIrrf = 7.5;
deducaoIrrf = 142.80;
}else if(baseCalculoIrrf >= 2826.66 && baseCalculoIrrf < 3751.05) {
aliquotaIrrf = 15.0;
deducaoIrrf = 354.80;
}else if(baseCalculoIrrf >= 3751.06 && baseCalculoIrrf < 4664.68) {
aliquotaIrrf = 22.5;
deducaoIrrf = 636.13;
}else if(baseCalculoIrrf > 4664.69) {
aliquotaIrrf = 27.5;
deducaoIrrf = 869.36;
}
Double valorIrBruto = baseCalculoIrrf *(aliquotaIrrf/100);
Double valorIrDeduzido = valorIrBruto - deducaoIrrf;
//Valor mínimo para retenção de IR R$10,00
if(valorIrDeduzido <= MENOR_RETENCAO_IR) {
valorIrDeduzido = 0.0;
}
Double valorPagamentoLiquido = baseCalculoIrrf - valorIrDeduzido;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println("Valor Bruto do Pagamento: R$ " + df.format(valorPagamento));
System.out.println("Desconto de INSS (11%): R$ " + df.format(retencaoInss));
System.out.println("Base de Cálculo IR: R$ " + baseCalculoIrrf);
System.out.println("Aliquota IR (%): R$ " + df.format(aliquotaIrrf));
System.out.println("Valor IR Bruto: R$ " + df.format(valorIrBruto));
System.out.println("Dedução do IR: R$ " + df.format(deducaoIrrf));
System.out.println("Imposto de Renda Devido: R$ " + df.format(valorIrDeduzido));
System.out.println("Valor Líquido à Receber: R$ " + df.format(valorPagamentoLiquido));
sc.close();
}
}
Boa tarde Pessoal!
Estou iniciando em lógica de programação com Java. Ainda não estou na parte de OO.
Fiz o seguinte algoritmo para calculo de INSS e IR de pagamentos a pessoa física, unindo o estudo a minha rotina, diariamente preciso fazer este cálculo, então porque não ?
Gostaria de exportar as informações que estão sendo impressas no console para um arquivo txt.
Tentei algumas vezes com exemplos da internet mas sem sucesso, sempre muitos erros.
O que posso utilizar para que possa obter o arquivo txt com os dados?
Caso tenham sugestão de melhorias para o código podem colocar por gentileza, desde que não seja utilizando Orientação a Objeto neste momento.
Obrigado.