import java.util.Scanner;
public class aula14e3 {
public static void main(String[] args) {
int[] cadeira = new int[10];
int reserva;
String opcao="S";
Scanner t = new Scanner (System.in);
for (int i=0 ; i<10 ; i++) {
cadeira[i] += i+1;
System.out.print("[" + cadeira[i] + "]");
}
System.out.println("\n-------------------------------");
do {
System.out.print("Reservar a cadeira: ");
reserva = t.nextInt();
reserva -= 1;
if (cadeira[reserva] != 0) {
cadeira[reserva] = 0;
} else {
System.out.println("ERRO: cadeira já reservada!");
}
System.out.println("\n-------------------------------");
for (int i=0 ; i<10 ; i++) {
System.out.print("[" + cadeira[i] + "]");
}
System.out.println("\n-------------------------------");
System.out.print("Deseja reservar outra cadeira? [S/N] ");
opcao = t.nextLine();
} while (opcao == "S");
}
}
O comando opcao = t.nextLine();
logo acima do while não é executado, ele pula e já termina o programa, já tentei várias formas como != “N”, começar a variável com S ou com N e nada funcionou.
Está sendo executado sim!
O problema é que você tem um nextInt(), lá na segunda linha do do/while.
Desta maneira, você lê a opção numérica, mas deixa o “\n” (referente ao enter que o usuário pressiona para confirmar o número informado) “na fila” para ser lido. Quando o código encontra a instrução t.nextLine(), este já faz uma verificação na tal fila e, como existe algo lá, captura, sem dar chances para o usuário digitar qualquer coisa.
Sendo assim, você precisa trocar o teu nextInt() por nextLine() e converter o valor para inteiro utilizando o Integer e o método valueOf() ou parseInt().
Obrigado, em todo caso pra agilizar aqui criei outro Scanner, agora deu certo, mas não sei pq não está terminando o programa quando digito N, ele só continua.
import java.util.Scanner;
public class aula14e3 {
public static void main(String[] args) {
int[] cadeira = new int[10];
int reserva;
String opcao="S";
Scanner t = new Scanner (System.in);
Scanner o = new Scanner (System.in);
for (int i=0 ; i<10 ; i++) {
cadeira[i] += i+1;
System.out.print("[" + cadeira[i] + "]");
}
System.out.println("\n-------------------------------");
do {
System.out.print("Reservar a cadeira: ");
reserva = t.nextInt();
reserva -= 1;
if (cadeira[reserva] != 0) {
cadeira[reserva] = 0;
} else {
System.out.println("ERRO: cadeira já reservada!");
}
System.out.println("\n-------------------------------");
for (int i=0 ; i<10 ; i++) {
System.out.print("[" + cadeira[i] + "]");
}
System.out.println("\n-------------------------------");
System.out.print("Deseja reservar outra cadeira? [S/N] ");
opcao = o.nextLine();
} while (opcao != "N");
}
}
Para se comparar strings o certo é utilizar o equals então ficaria (!“N”.equals(opcao)) lembrando que ele só vai cair fora caso o valor informado for N maiúsculo.
tem razão, agora funcionou.
Obrigado galera.