Escreva um método privado de nome leUmaIdade, que lê uma idade, do teclado, e retorna a idade lida. Só aceita idades de 18 a 110 anos (com exceção de 0 que é uma idade fictícia usada para encerrar a entrada de dados).
Então, até o momento, de forma direta, pensei:
publicclassIdade{publicintleUmaIdade(){idade=Teclado.leInt("Digite sua idade:");if(idade>=18&&idade<=110){returnidade;System.out.println("Sua idade é"+idade);elseif(idade<=18&&idade>=110){intidade=Teclado.leInt("Digite sua idade:");}}}}
Porém, estou recebendo o erro: “ELSE WITHOUT IF” na linha 8.
Outra: acham que meu raciocínio está no caminho certo? Alguma dica de lógica?
O erro acontece porque você colocou um “else if” dentro de um “if”. Um “else if” deve vir após um “if” e não ficar dentro de um.
M
MarcioMaia
Um dica que lhe dou, é que sempre que for realizar comparações que nem essa:
elseif(idade<=18&&idade>=110){
Faça da seguinte forma, até para melhorar a semântica.
elseif((idade<=18) && (idade>=110)){
vlw.
asousaj
Vemos que tem um ‘else if’ para caso do usuário ter digitado uma idade inválida. Porem nesse ‘else if’ vc solicita novamente a idade e não esta tratando a possibilidade do usuário digitar um valor inválido novamente.
Avalie a possibilidade de usar ‘do while’.
Outra coisa esse ‘println’ depois do ‘return’ nunca será executado, faca-o antes do ‘return’.
Flw
FacaNaCaveira
Fala ai dcloko
So pra deixar claro para outras pessoas que tambem possam ter essa mesma duvida.
O seu codigo estava assim:
publicclassIdade{publicintleUmaIdade(){idade=Teclado.leInt("Digite sua idade:");if(idade>=18&&idade<=110){returnidade;System.out.println("Sua idade é"+idade);elseif(idade<=18&&idade>=110){intidade=Teclado.leInt("Digite sua idade:");}}}}
e com as sugestões dos companheiros e minha ficaria assim:
publicclassIdade{publicintleUmaIdade(){intidade=0;do{idade=Teclado.leInt("Digite sua idade:");}while((idade<18)||(idade>110));System.out.println("Sua idade é"+idade);returnidade;}}
Caso tenha cometido algum deslize me ajudem
Jemerson
Não sei se você precisa de laço de repetição,mas não seria mais fácil dessa forma:
publicclassIdade{privateintleUmaIdade(){Scannerteclado=newScanner(System.in);System.out.println("INFORME SUA IDADE");intidade=teclado.nextInt();//se a idade for dentro do esperado, eu retornoif(idade>=18&&idade<=110)returnidade;//retorno zero caso a condição acima não seja válidareturn0;}}
Lucas_Abbatepaolo
Minhas opniões…
Se é pra fazer o exercicio de forma correta
vc escreveu um metodo publico…
Em relação a faça com do while, faça com if, faça com while…de todas as formas vc consegue fazer, e pode variar os resultados.
Procure manter a coesão em suas classes e metodos (Principio basico da OO).
Se é pra ficar lendo ate digitar um valor valido ou ler somente uma vez e se o cara digitou errado vc fecha, a sua necessidade é quem vai te dizer.