Boa tarde, pessoal. Começando a programar e dentre várias dúvidas, uma fez travar meu código:
Se houver uma condição “if” dentro de um loop “for” e tal condição não for respeitada, como faço para que volte a leitura do código para o último loop feito? Por exemplo, usando a classe Scanner para a introdução de números de 0 a 10, o usuário pode inserir o numero 12 e a condição de 0 a 10 não será respeitada, portanto o usuário deve inserir novamente no campo destinado àquele número inserido erradamente com um outro de 0 a 10, agora podendo seguir o código.
Nesse caso você usou um switch e para caso a escolha do sexo não for M, nem F, ele retornaria o Scanner para o usuário inserir de novo, certo? Se for isso, será que não tem outra forma de retomar o Scanner em vez de um switch?
Claro que tem, isso foi só um exemplo, é só você adaptar o código para a sua necessidade.
Exemplo:
import java.io.PrintStream;
import java.util.Scanner;
public class Programa {
private static final Scanner ENTRADA = new Scanner(System.in);
private static final PrintStream SAIDA = System.out;
public static void main(String[] args) {
try {
Programa programa = new Programa();
programa.executar();
} catch (Throwable t) {
t.printStackTrace();
}
}
public void executar() throws Exception {
for (int i = 0; i < 20; i++) { // um loop qualquer
int numero = lerNumero(0, 10);
SAIDA.println("Numero digitado: " + numero);
}
}
private int lerNumero(int de, int ate) {
while (true) { // enquando não digitar um número válido, vai ficar repetindo
SAIDA.print("Digite um numero entre " + de + " e " + ate + ": ");
int numero = Integer.parseInt(ENTRADA.nextLine());
if (numero >= de && numero <= ate) {
return numero;
}
SAIDA.println("Numero inválido: " + numero);
}
}
}
No código que estou tentando usei o Scanner para inicializar cada termo de um Array, e na condição não respeitada tentei usar o mesmo do seu código: return Nome_Array[n], mas nada funcionou. O que eu poderia fazer?