Olá a todos! Gostaria de uma dica a respeito da implementação da fila circular sequencial, mais precisamente para imprimir a fila!!! eu tenho que imprimi-la e sempre atualiza-la no JTextArea quando entro ou saio com um elemento da lista, mas tá dando um probleminha na primeira tentativa eu consigo inserir todos os elemento e retirar, mas quando eu tento reaproveitar os espaços vazios do vetor que é essa a intenção, ele não imprime mais no JTextArea e depois disso também não imprime normalmente também mesmo que eu só coloque e tire todos os elementos da fila sem reaproveitar as posições vazias do vetor!!! ele esta reaproveitando as posições, mas não está imprimindo! Por exemplo: meu vetor tem 5 posições e eu insiro os valores 1, 2, 3, 4 e 5, até ai tudo bem ele imprime, depois eu começo a retirar os elementos por exemplo o 1 e o 2, até ai tudo bem ele também imprime! então tem duas posições sobrando no meu vetor e se eu tentar inserir mais dois elemento por exemplo 10 e 20, quando eu entro com o primeiro ele já não imprime mais, mas as posições são reaproveitadas por que cada elemento que eu retiro é mostrado em um jtextfield, acredito que o problema é a impressão mesmo se alguém puder me ajudar agradeço!!! segue o código da minha classe e também o código dos botões:
public class FilaCircular {
private final int tamanho = 5;
private String[] filaCircular = new String[tamanho];
private int inicio;
private int fim;
private int numeroDeElementos;
public FilaCircular() {
inicio = -1;
fim = -1;
numeroDeElementos = 0;
}
public boolean filaCheia() {
if (numeroDeElementos == tamanho) {
return true;
} else {
return false;
}
}
public boolean filaVazia() {
if (numeroDeElementos == 0) {
return true;
} else {
return false;
}
}
public boolean entrarElemento(String elemento) {
if (!filaCheia()) {
if (fim == tamanho - 1) {
fim = 0;
} else {
fim = fim + 1;
}
numeroDeElementos= numeroDeElementos + 1;
filaCircular[fim] = elemento;
return true;
} else {
return false;
}
}
public String sairElemento() {
String elemento = null;
if (!filaVazia()) {
if (inicio == tamanho - 1) {
inicio = 0;
} else {
inicio = inicio + 1;
}
elemento = filaCircular[inicio];
numeroDeElementos= numeroDeElementos - 1;
return elemento;
} else {
return elemento;
}
}
public String imprimir() {
String elemento = "";
for (int cont = inicio +1; cont <= fim; cont++) {
elemento += filaCircular[cont] + " ";
}
return elemento;
}
}
Código dos botões de entrar e sair elemento:
private void jButtonEntrarActionPerformed(java.awt.event.ActionEvent evt) {
boolean retorno;
retorno = fila.entrarElemento(jTextField1.getText());
if (retorno) {
String elemento;
elemento = fila.imprimir();
jTextField1.setText(null);
jTextArea1.setText(null);
jTextField1.grabFocus();
jTextArea1.append(elemento);
} else {
JOptionPane.showMessageDialog(null, "A filha está cheia!!!");
jTextField1.setText(null);
}
}
private void jButtonSairActionPerformed(java.awt.event.ActionEvent evt) {
String elemento;
String imprime;
elemento = fila.sairElemento();
if (elemento == null) {
JOptionPane.showMessageDialog(null, "A fila está vazia!!!");
jTextField2.setText(null);
} else {
jTextArea1.setText(null);
imprime = fila.imprimir();
jTextArea1.append(imprime);
jTextField2.setText(elemento);
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}
Desde já agradeço pela atenção!!!