Ajuda com Exercício em Java - Estrutura de Seleção
5 respostas
java
D
Daniel_Chaves_Calaca
Eai pessoal tudo bem?
Estou com um problema com esse exercício de estrutura de seleção, no caso o código fica pulando direto… queria saber aonde estou errando exatamente, obrigado pela ajuda !
Os detalhes do exercício estão aqui caso alguém queira consultar:
import java.util.*;
public class ContribuicaoJava {
publicstaticvoidmain(String[]args){Scannersal=newScanner(System.in);floatinss=0,salario;System.out.println("Qual o valor do salario bruto?");salario=sal.nextFloat();if(salario<=1.556){inss=(float)((salario*0.8));}else{if(salario>=1.557||salario<=2.594){inss=(float)((salario*0.09));}else{if(salario>=2.595||salario>=5.189){inss=(float)((salario*0.11));}}System.out.println("O salario bruto é de :R$"+salario);System.out.println("A contribuição para o INSS é de R$:"+(inss));System.out.println("O Salario com a contribuição é de R$"+(salario-inss));if(inss<=1.903){System.out.println("Isento de contribição");}else{if(inss>=2.853||inss<=3.804){System.out.println("A parcela a deduzir do imposto é de R$142 o salario pós a contribuição é de R$"+(inss-142));}else{if(inss>=3.805||inss<=4.753){System.out.println("A parcela teste teste");}}}}}
Em java o . representa o ínicio da parte decimal de um número ou seja 2.855 não é dois mil oitocentos e cinquenta, números com parte decimais podem ser representando assim:
2_000.45ou2000.45
E este if dentro do else pode ser subistituido por else if:
System.out.println("A parcela a deduzir do imposto é de R$142 o salario pós a contribuição é de R$"+(inss-142));//subistituaavariávelinsspelavariávelsalario.
Ao final do seu código sempre feche recursos de entrada e/ou saída. nesse caso invoque o método close() da classe Scanner.
Faça as alterações no código, rode e teste com diferentes valores. boa sorte ;)
D
Daniel_Chaves_Calaca
Oi leofariasrj25 tudo bem?
Porra obrigado!
Eu só não entendi a parte do close, como funciona?
L
leofariasrj25
declare sal.close() na última linha do método main(). Desta forma você está fechando o Scanner evitando assim que ele fique consumindo recursos da máquina. Quando você começar a se aprofundar em leitura e escrita de dados você vai entender porque é importante invocar o método close() de classes como Scanner, BufferedReader, BufferedWriter, etc.
V
victordamatta
Complemento a resposta do @leofariasrj25 apenas quanto aos valores da variável “salario” dentro das condições. Da forma que está construída, alguns valores não passarão pelo código necessário. Exemplo: se informarmos o salário de R$ 1556,50 (ou qualquer outro valor decimal), a execução não entrará em nenhuma das condições relacionadas ao INSS. O mesmo acontece para o valor R$ 2594,50 (ou qualquer outro valor decimal).
Para que esse “problema” não aconteça, os valores deverão possuir casas decimais de acordo com o estabelecido pelo exercício. Além disso, para simplificar a codificação, poderá ser usado condições mutuamente exclusivas. Exemplo: