**else if (opcao == 2) {
if (fila.isEmpty()) {
Sensores sensorRemovido = fila.dequeue();
System.out.println("Sensor removido da fila: " + sensorRemovido);
} else {
System.out.println(“A fila está vazia. Nenhum sensor para remover.”);
}
Nessa parte era para a fila fazer dequeue mas ela retorna A fila está vazia. Nenhum sensor para remover. **
package listas;
import entidades.Sensores;
import filas.FilaInt;
public class ListaIntCrescente {
FilaInt fila = new FilaInt();
private static final float PH_MIN = 6;
private static final float PH_MAX = 7;
private static final float Potassio_MIN = 100;
private static final float Potassio_MAX = 400;
private static final int UMIDADE_MIN = 40;
private static final int UMIDADE_MAX = 60;
private class NO {
Sensores dado;
NO prox;
}
private NO lista = null;
public void insere(Sensores novoSensor) {
if (novoSensor.getPh() < PH_MIN || novoSensor.getPh() > PH_MAX || novoSensor.getPotassio() < Potassio_MIN || novoSensor.getPotassio() > Potassio_MAX || novoSensor.getUmidade() < UMIDADE_MIN || novoSensor.getUmidade() > UMIDADE_MAX) {
fila.enqueue(novoSensor);
} else {
NO novo = new NO();
novo.dado = novoSensor;
if (lista == null) {
novo.prox = null;
lista = novo;
} else {
if (novo.dado.getNumeroSensor() < lista.dado.getNumeroSensor()) {
novo.prox = lista;
lista = novo;
} else {
NO aux = lista;
boolean achou = false;
while (aux.prox != null && !achou) {
if (aux.prox.dado.getNumeroSensor() < novo.dado.getNumeroSensor())
aux = aux.prox;
else
achou = true;
}
novo.prox = aux.prox;
aux.prox = novo;
}
}
}
}
public boolean remove(int numeroSensor) {
boolean achou = false;
if (lista != null) {
if (numeroSensor == lista.dado.getNumeroSensor()) {
achou = true;
lista = lista.prox;
} else {
NO aux = lista;
while (aux.prox != null && !achou) {
if (numeroSensor != aux.prox.dado.getNumeroSensor())
aux = aux.prox;
else {
achou = true;
aux.prox = aux.prox.prox;
}
}
}
}
return achou;
}
public int contaNos() {
int cont=0;
NO aux = lista;
while (aux!=null) {
cont++;
aux = aux.prox;
}
return cont;
}
public void apresenta() {
NO aux = lista;
System.out.println("\n *** LISTA ***" + "\n");
while (aux != null) {
System.out.println("\t " + aux.dado.toString());
aux = aux.prox;
}
System.out.println("\n *** FILA ***" + "\n");
fila.apresenta();
}
// public void apresenta() {
//NO aux = lista;
//System.out.println("\n *** LISTA ***");
//while (aux != null) {
//System.out.println("\t " + aux.dado.toString());
//aux = aux.prox;
//}
//}
}
package aplicacao;
import java.util.Random;
import java.util.Scanner;
import filas.FilaInt;
import entidades.Sensores;
import listas.ListaIntCrescente;
public class Monitora {
public static final float PH_MIN = 4;
public static final float PH_MAX = 8;
public static final float Potassio_MAX = 420;
public static final float Potassio_MIN = 80;
public static final int UMIDADE_MIN = 20;
public static final int UMIDADE_MAX = 70 - UMIDADE_MIN;
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
ListaIntCrescente lista = new ListaIntCrescente();
FilaInt fila = new FilaInt();
Random gerador = new Random();
int numeroSensor;
String coordenadasSensores[] = { "47o55�44�W,21o00�34�S", "47o55�42�W,21o00�35�S", "47o55�39�W,21o00�37�S",
"47o55�44�W,21o00�39�S", "47o55�40�W,21o00�40�S", "47o55�32�W,21o00�34�S", "47o55�28�W,21o00�34�S",
"47o55�28�W,21o00�38�S", "47o55�33�W,21o00�39�S" };
int n = coordenadasSensores.length;
System.out.println(" Coordenadas Iniciais");
for (int i = 0; i < n; i++) {
System.out.println("Sensor " + i + ": " + coordenadasSensores[i]);
}
/*
* exemplo de gea��o de valores aleat�rios para simular altera��o de medidas dos
* sensores
*/
for (int i = 0; i < n; i++) {
numeroSensor = i+1;
int umidade = gerador.nextInt(UMIDADE_MAX) + UMIDADE_MIN;
System.out.println("Valor inteiro entre " + UMIDADE_MIN + " e " + UMIDADE_MAX + ": " + umidade);
System.out.println("\nExemplo de valores de pH");
float ph = PH_MAX - (PH_MIN * ((float) gerador.nextInt(10) / 10));
System.out.println("Valor real entre " + PH_MIN + " e " + PH_MAX + ": " + ph);
float potassio = Potassio_MIN + (Potassio_MAX - Potassio_MIN) * ((float) gerador.nextInt(10) / 10);
Sensores novoSensor = new Sensores(numeroSensor,coordenadasSensores[i], umidade, ph, potassio);
lista.insere(novoSensor);
}
System.out.println("\nDados armazenados na lista:");
lista.apresenta();
int opcao = 0;
do {
System.out.println(gerarMenu());
opcao = teclado.nextInt();
switch(opcao) {
case 1:
inserirSensor(lista);
break;
case 2:
removerSensor(lista, fila);
break;
case 3:
listarSensores(lista);
break;
}
} while(opcao != 6);
System.out.println("Selecione uma opção");
/*
* Esse trecho de programa pode ser usado para a implementa��o de testes com
* coordenadas e valores de medidas em intervalos espec�ficos
*/
//gerar menu//
}
private static void listarSensores(ListaIntCrescente lista) {
System.out.println("Sensores na lista e na fila:");
lista.apresenta();
}
private static void inserirSensor(ListaIntCrescente lista) {
Scanner teclado = new Scanner(System.in);
int numeroSensor;
String coordenadasSensores;
int umidade;
float ph, potassio;
System.out.print("\nInforme o número do sensor: ");
numeroSensor = teclado.nextInt();
System.out.print("Informe as coordenadas do sensor, ex: (47o55'44''W,21o00'34''S): ");
coordenadasSensores = teclado.nextLine();
teclado.nextLine();
System.out.print("Insira a umidade: ");
umidade = teclado.nextInt();
System.out.print("Insira o PH: ");
ph = teclado.nextFloat();
System.out.print("Insira o ppm do potássio: ");
potassio = teclado.nextFloat();
Sensores novoSensor = new Sensores(numeroSensor,coordenadasSensores, umidade, ph, potassio);
}
private static void removerSensor(ListaIntCrescente lista, FilaInt fila) {
Scanner teclado = new Scanner(System.in);
int opcao, numeroSensor;
System.out.println("Digite 1 para remover itens da lista e 2 para itens da fila: ");
opcao = teclado.nextInt();
if (opcao == 1) {
System.out.println("Selecione o sensor que deseja remover: ");
numeroSensor = teclado.nextInt();
boolean sensorRemovido = lista.remove(numeroSensor);
if (sensorRemovido) {
System.out.println("Sensor removido com sucesso.");
} else {
System.out.println("Nenhum sensor com o número especificado foi encontrado.");
}
} else if (opcao == 2) {
if (fila.isEmpty()) {
Sensores sensorRemovido = fila.dequeue();
System.out.println("Sensor removido da fila: " + sensorRemovido);
} else {
System.out.println("A fila está vazia. Nenhum sensor para remover.");
}
} else {
System.out.println("Opção inválida. Por favor, selecione 1 ou 2.");
}
}
public static String gerarMenu() {
String aux = "\nMonitorador de sensores" + "\n";
aux += "1. Inserir sensor" + "\n";
aux += "2. Remover sensor" + "\n";
aux += "4. Pesquisar sensor" + "\n";
aux += "5. Listar todos os sensores" + "\n";
aux += "6. Encerrar programa";
return aux;
}
}
package entidades;
public class Sensores {
private int numeroSensor;
private String coordenadas;
private int umidade;
private float ph;
private float potassio;
public Sensores(int numeroSensor, String coordenadas, int umidade, float ph, float potassio) {
this.numeroSensor = numeroSensor;
this.coordenadas = coordenadas;
this.umidade = umidade;
this.ph = ph;
this.potassio = potassio;
}
public int getNumeroSensor() {
return numeroSensor;
}
public String getCoordenadas() {
return coordenadas;
}
public int getUmidade() {
return umidade;
}
public float getPh() {
return ph;
}
public float getPotassio() {
return potassio;
}
@Override
public String toString() {
return "Sensor " + numeroSensor + ": coordenadas = " + coordenadas + ", umidade = " + umidade
+ ", ph = " + ph + ", potassio = " + potassio;
}
}
package filas;
import entidades.Sensores;
public class FilaInt {
private class NO {
Sensores dado;
NO prox;
}
NO ini, fim;
public void init() {
ini = fim = null;
}
public boolean isEmpty() {
if (ini == null && fim == null)
return true;
else
return false;
}
public void enqueue(Sensores sensor) {
NO novo = new NO();
novo.dado = sensor;
if (isEmpty())
ini = novo;
else
fim.prox = novo;
fim = novo;
}
public Sensores dequeue() {
Sensores v = ini.dado;
ini = ini.prox;
if (ini == null)
fim = null;
return v;
}
public Sensores first() {
return (ini.dado);
}
public void apresenta() {
NO aux = ini;
while (aux != null) {
System.out.println("\t " + aux.dado.toString());
aux = aux.prox;
}
}
}