Erro na execução do codigo while

2 respostas
L

public class Banco {

public static void main(String[] args) {

	Queue<String> fila = new LinkedList<String>();

	fila.offer("Antonieta"); 
	fila.offer("Maria");
	fila.offer("Jose");
	fila.offer("Pedro");
	fila.offer("Duca");
	fila.offer("Simone");
	fila.offer("Antonio");

	
	while (fila != null) {

		System.out.println("Seja muito bem vindo " + fila.poll());

	}

output


Seja muito bem vindo null
Seja muito bem vindo null
Seja muito bem vindo null
Seja muito bem vindo null
Seja muito bem vindo null
Seja muito bem vindo null
Seja muito bem vindo null
Seja muito bem vindo null
Seja muito bem vindo null

Pq está ocorrendo essa impressão?

Minha lógica é: método poll retira da fila. Segundo pesquisas…ele qdo nao existe mais ninguem a ser retirado retorna null, era para ele dar 7 loops e parar. Imprimir os nomes e parar.

Se alguem puder me ajudar, obriado

2 Respostas

staroski

Você não postou o output inteiro.
Se rolar até o início das impressões vai ver que os primeiros valores impressos foram:

Seja muito bem vindo Antonieta
Seja muito bem vindo Maria
Seja muito bem vindo Jose
Seja muito bem vindo Pedro
Seja muito bem vindo Duca
Seja muito bem vindo Simone
Seja muito bem vindo Antonio

O que está errado é o condicional do seu while que executa infinitamente:

while (fila != null) { // a fila nunca vai ser null na sua implementação
    System.out.println("Seja muito bem vindo " + fila.poll());
}

O teste correto é assim:

while (!fila.isEmpty()) { // enquanto a fila não estiver vazia
    System.out.println("Seja muito bem vindo " + fila.poll());
}

Ou, se preferir, pode fazer assim:

String elemento = null;
while ((elemento = fila.poll()) != null) {
    System.out.println("Seja muito bem vindo " + elemento);
}
L

Show staroski…mto bom! Acabei usando iterator…mas vou testar seus codigos…pq mais legiveis q um enlatado…hehehe

Se puder me ajudar numa outra questão…vou postar como novo topico somente para ver se alguem ajuda tb…mas vou deixar aqui com vc…se puder ajudar.

segue o pastebin: https://pastebin.com/27ccki2R

Estou simulando um Bot…a ideia é aproveitar o scanner q instanciei na classe recepcao…para tanto eu criei um atributo na classe Gerusa (meu bot rs) q recebe o valor do scanner. Depois eu faço um if dentro do getResultado e mando comparar…enfim…bugou…

Acho q visualmente fica melhor de entender o q quero fazer…quero somente aproveitar a opção escolhida no scanner contido na classe recepccao…la dentro da minha classe gerusa…de forma q a Gerusa reconhecesse…tivesse seu metodo para comparar e devolvesse o Sout…com a opcao escolhida…ou seja ela vai mandar a msg com a informacao escolhida apos o rosto na foto anexa

Criado 29 de maio de 2019
Ultima resposta 30 de mai. de 2019
Respostas 2
Participantes 2