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:
public class Idade {
public int leUmaIdade ( ) {
idade = Teclado.leInt("Digite sua idade:");
if (idade>=18&&idade<=110){
return idade;
System.out.println ("Sua idade é" + idade);
else if (idade<=18&&idade>=110){
int idade = 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?
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’.
So pra deixar claro para outras pessoas que tambem possam ter essa mesma duvida.
O seu codigo estava assim:
public class Idade {
public int leUmaIdade ( ) {
idade = Teclado.leInt("Digite sua idade:");
if (idade>=18&&idade<=110){
return idade;
System.out.println ("Sua idade é" + idade);
else if (idade<=18&&idade>=110){
int idade = Teclado.leInt("Digite sua idade:");
}
}
}
}
e com as sugestões dos companheiros e minha ficaria assim:
public class Idade
{
public int leUmaIdade ( )
{
int idade = 0;
do
{
idade = Teclado.leInt("Digite sua idade:");
}
while(( idade < 18 ) || ( idade > 110 ) );
System.out.println ("Sua idade é" + idade);
return idade;
}
}
Não sei se você precisa de laço de repetição,mas não seria mais fácil dessa forma:
[code]public class Idade {
private int leUmaIdade() {
Scanner teclado = new Scanner(System.in);
System.out.println("INFORME SUA IDADE");
int idade = teclado.nextInt();
//se a idade for dentro do esperado, eu retorno
if (idade >= 18 && idade <= 110)
return idade;
//retorno zero caso a condição acima não seja válida
return 0;
}
}
[/code]
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.