Como acessar uma variável inserida em IF?

Comecei com java há pouco tempo, e queria saber como faço para acessar o valor de uma variável que está inserida em IF

Erro:

Screenshot_1

Código:

if (salario <= 1045) {
        INSS = (float) (salario * 0.925);
        System.out.println("R$" + INSS + "será destinado ao INSS");
}
salario_ajustado = salario_ajustado - (FGTS + **IR** + **INSS** + Vale);

Observações:

  • Se necessário posso fornecer mais trechos do código ou até mesmo o código completo.
  • Os valores em negrito são referentes ao erro apresentado.
1 curtida

Isso acontece porque se não entrar no if, as variáveis IR e INSS não terão nenhum valor. E aí quando você tenta usá-las depois, vai dar erro justamente porque elas estão sem valor nenhum (provavelmente você só declarou as variáveis antes do if, mas não atribuiu nenhum valor a elas).

Talvez a última linha também devesse estar dentro do if (faz sentido ajustar o salário se não entrar no if?), ou então você deve colocar um valor para elas antes do if.

Outro detalhe é que as convenções de nomenclatura do Java dizem para usar nomes de variáveis com letra inicial minúscula, além de usar nomesDesseJeito em vez de nomes_desse_jeito (não vai dar erro no programa, mas pode confundir quem está acostumado com as convenções da linguagem - por exemplo, NOMES_ASSIM geralmente são usados para constantes).


Outra dica: para formatar valores monetários, pode usar um java.text.NumberFormat:

NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
if (salario <= 1045) {
    INSS = (float) (salario * 0.925);
    System.out.println(formatter.format(INSS) + " será destinado ao INSS");
}

Com isso ele já coloca o “R$” antes, e formata o valor com 2 casas decimais.

3 curtidas

Obrigado pela resposta.
Mas ainda fico em dúvida, tanto a variável IR, quanto a variável INSS estão dentro do if, e dependendo do salário da pessoa, vai mudar quanto deve ser descontado. Não tem nenhuma maneira de acessar essas variáveis dentro do if?
Em relação a convenção de nomenclatura, obrigado por me informar, não sabia e vou me atentar para escrever corretamente nos próximos códigos.
Em relação ao java.text.NumberFormat, não conhecia esta função, obrigado, assim fica até melhor para visualização quando executar o programa.

        else if (salario <= 4664.68) {
            IR = (float) (salario * 0.225);
            salario = salario - IR;
            System.out.println("R$" + IR + " será destinado ao IR");

Consegui, basta realizar a operação dentro do if. Obrigado pela ajuda @hugokotsubo