Olá pessoal!
Não sou um participante ativo do fórum mas sempre passo por aqui pra ver o que o pessoal anda escrevendo.
Mas deixando o lero-lero de lado, vou expôr um problema que está me atormentando há dias e não consigo achar uma solução.
Tenho o seguinte código:
Queue filaAtendimento = new Queue();
filaAtendimento.enqueue(new Cliente(1));
for (int i = 1; i <= tempoSimulacao; i++)
{
if (!filaAtendimento.isEmpty())
{
É fácil, não precisa depurar para ver que, quando o if(!filaAtendimento.isEmpty()) for chamado pela primeira vez, o bloco de código dentro deste if será executado. Foi chamado filaAtendimento.enqueue(new Cliente(1)) e por isso a fila não está vazia.
Mas o problema é que aqui o bloco de código dentro do if nunca é excutado, ou seja, o objeto criado com new Cliente(1) é como se não existisse. Naturalmente a primeira pergunta a ser feita é: mas o método enqueue está funcionando corretamente? Está! Veja o que ele faz:
public void enqueue(Cliente insertItem)
{
if (isEmpty()) // firstNode and lastNode refer to same Object
{
firstNode = lastNode = new Node(insertItem);
} else
{// lastNode's nextNode refers to new node
lastNode.setNext(new Node(insertItem));
lastNode = lastNode.getNext();
}
}
E este é o método isEmpty():
public boolean isEmpty()
{
return firstNode == null;
}
O que fiz foi o seguinte: coloquei um break point na primeira linha do método enqueue para ver o que estava acontecendo. Quando ele é chamado pela primeira vez, obviamente a fila está vazia e então a seguinte linha é executada: firstNode = lastNode = new Node(insertItem);
OK. Coloquei um watch no firstNode e no lastNode e, no momento em que o new Node é atrituído a eles, eles recebem o valor correto. O problema é: quando termina a execução deste método, todo o conteúdo do meu objeto filaAtendimento desaparece.
Este é um exercício de uma disciplina de programação que estou fazendo na faculdade. Busquei o auxílio do professor e ele executou meu código no seu computador e funcionou normalmente. O valor realmente entra na fila e quando é feito o teste, isEmpty retorna false. Aqui no meu computador que não funciona.
Eu estava utilizando o OpenJDK no NetBeans e, na esperança de que o problema fosse este, baixei o JDK da Sun e reconfigurei a plataforma Java no NetBeans. O problema persiste. Ainda com o OpenJDK, fiz também o teste no Eclipse, mas nada, o mesmo problema.
Alguém já passou por uma situação como esta? É comum isso acontecer? Um trecho de código simples como este funcionar em um computador e não funcionar em outro?
Preciso do auxílio de vocês, pois não sei mais o que fazer!
Caso seja útil esta informação, estou rodando tudo no Ubuntu 8.04. Meu computador é um AMD64 com 512 de memória. Meu Java é este:
java version “1.6.0_07”
Java™ SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot™ Client VM (build 10.0-b23, mixed mode)
Desde já, agradeço o auxílio!
Abraço!
José