Estou tendo problemas na escrita da saída deste programa e não estou conseguindo identificar onde é. A entrada é a seguinte:
1
a
0 60
a
1 76
a
2 25
a
3 20
a
4 35
a
5 76
a
6 53
a
7 36
i
r
i
a
8 43
i
r
i
f
Saída
fila de idosos:
ID: 1 IDADE: 76
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 0 IDADE: 60
ID: 2 IDADE: 25
ID: 3 IDADE: 20
ID: 4 IDADE: 35
ID: 6 IDADE: 53
ID: 7 IDADE: 36
fila de idosos:
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 0 IDADE: 60
ID: 2 IDADE: 25
ID: 3 IDADE: 20
ID: 4 IDADE: 35
ID: 6 IDADE: 53
ID: 7 IDADE: 36
fila de idosos:
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 0 IDADE: 60
ID: 2 IDADE: 25
ID: 3 IDADE: 20
ID: 4 IDADE: 35
ID: 6 IDADE: 53
ID: 7 IDADE: 36
ID: 8 IDADE: 43
fila de idosos:
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 2 IDADE: 25
ID: 3 IDADE: 20
ID: 4 IDADE: 35
ID: 6 IDADE: 53
ID: 7 IDADE: 36
ID: 8 IDADE: 43
A minha saída está apresentando o seguinte resultado:
fila de idosos:
ID: 1 IDADE: 76
ID: 1 IDADE: 76
ID: 5 IDADE: 76
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 2 IDADE: 25
ID: 0 IDADE: 60
ID: 0 IDADE: 60
ID: 2 IDADE: 25
ID: 0 IDADE: 0
fila de idosos:
ID: 1 IDADE: 76
ID: 1 IDADE: 76
ID: 5 IDADE: 76
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 0 IDADE: 60
ID: 0 IDADE: 60
ID: 2 IDADE: 25
fila de idosos:
ID: 1 IDADE: 76
ID: 1 IDADE: 76
ID: 5 IDADE: 76
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 7 IDADE: 36
ID: 0 IDADE: 60
ID: 2 IDADE: 25
ID: 0 IDADE: 0
fila de idosos:
ID: 1 IDADE: 76
ID: 1 IDADE: 76
ID: 5 IDADE: 76
ID: 5 IDADE: 76
fila de nao-idosos:
ID: 0 IDADE: 60
ID: 2 IDADE: 25
import java.util.Arrays;
import java.util.Scanner;
public class HuxleyCode {
private int capacity;
int queueArr[];
int front;
int rear;
int currentSize = 0;
public HuxleyCode(int sizeOfQueue) {
this.capacity = sizeOfQueue;
front = 0;
rear = -1;
queueArr = new int[this.capacity];
}
/**
* this method is used to add element in the queue
*
* @param data
*/
public void enqueue(int data) {
if (isFull()) {
queueArr = Arrays.copyOf(queueArr, 2 * queueArr.length);
} else {
rear++;
if (rear == capacity - 1) {
rear = 0;
}
queueArr[rear] = data;
currentSize++;
}
}
/**
* This method removes an element from the front of the queue
*/
public void dequeue() {
if (isEmpty()) {
System.out.println("Queue is empty!! Can not dequeue element");
} else {
front++;
if (front == capacity - 1) {
// System.out.println(queueArr[front - 1] + " removed from the queue");
front = 0;
} else {
// System.out.println(queueArr[front - 1] + " removed from the queue");
}
currentSize--;
}
}
/**
* This method is use to check if element is full or not
*
* @return boolean
*/
public boolean isFull() {
if (currentSize == capacity) {
return true;
}
return false;
}
/**
* This method is use to check if element is empty or not
*
* @return
*/
public boolean isEmpty() {
if (currentSize == 0) {
return true;
}
return false;
}
public static void main(String a[]) {
int id = 0;
int idade = 0;
String comando = "";
Scanner input = new Scanner(System.in);
String rowValues = null;
HuxleyCode idosos = new HuxleyCode(5);
HuxleyCode idIdosos = new HuxleyCode(5);
HuxleyCode naoIdosos = new HuxleyCode(5);
HuxleyCode idNaoIdosos = new HuxleyCode(5);
while (!comando.equalsIgnoreCase("f")) {
rowValues = input.nextLine();
String[] elementArray = rowValues.split(" ");
if (elementArray.length == 1) {
comando = elementArray[0];
}
if (elementArray.length > 1) {
id = Integer.parseInt(elementArray[0]);
idade = Integer.parseInt(elementArray[1]);
}
if (idade > 60) {
if (comando.equalsIgnoreCase("a") == true) {
idIdosos.enqueue(id);
idosos.enqueue(idade);
}
if (comando.equalsIgnoreCase("r") == true) {
idosos.dequeue();
idosos.dequeue();
}
}
if (idade <= 60) {
if (comando.equalsIgnoreCase("a") == true) {
naoIdosos.enqueue(idade);
idNaoIdosos.enqueue(id);
}
if (comando.equalsIgnoreCase("r") == true) {
naoIdosos.dequeue();
idNaoIdosos.dequeue();
}
}
if (comando.equalsIgnoreCase("i") == true) {
System.out.println("fila de idosos:");
for (int i = idosos.front; i < idosos.currentSize; i++) {
if (idosos.isEmpty() == false) {
System.out.print("ID: " + idIdosos.queueArr[i] + " ");
System.out.print("IDADE: " + idosos.queueArr[i] + "\n");
} else {
System.out.print("fila vazia!\n");
}
}
System.out.println("fila de nao-idosos:");
for (int i = naoIdosos.front; i < naoIdosos.currentSize; i++) {
if (idosos.isEmpty() == false) {
System.out.print("ID: " + idNaoIdosos.queueArr[i] + " ");
System.out.print("IDADE: " + naoIdosos.queueArr[i] + "\n");
} else {
System.out.print("fila vazia!\n");
}
}
System.out.println("----------");
System.out.println();
}
}
input.close();
}
}