-2
I need to go through a chained list to compare whether the number the user will enter is equal to an attribute of a class (doctors) that has a chained list.
I have the following Classes: Node, Simple List, Doctors and System.
The error is in case 2 of the System, I’m trying to use an attribute like Node that is in List_simple to go through (aux is taking the value of first that I called Prim), but I believe that maybe this shouldn’t be the right way to go through.
Knot class:
public class No {
private Medicos m;
private No prox;
public No(Medicos me) {
this.setM(me);
this.setProx(null);
}
}
Simple List Class:
public class Lista_Simples {
private No prim; //Primeiro nó
private No ult; //Último nó
private int qntdno; //Quantidade de nós
private No aux;
Medicos M = new Medicos();
//Construtor
public Lista_Simples(){
this.prim = null; //Iniciando com null
this.ult = null; //Iniciando com null
this.qntdno = 0; //Iniciando com 0
this.aux = this.prim;
}
//Saber se a lista é vazia, se estiver nulo então é criado o primeiro nó
public boolean listavazia () {
return (this.prim == null);
}
public void inserirPrimeiro(Medicos p) {
No novoNo = new No(p);
//Se a lista não for vazia o primeiro nó também é o último
if(this.listavazia()){
this.ult = novoNo;
}
novoNo.setProx(this.prim); //O próximo nó se tornará o primeiro nó
this.prim = novoNo; //O novo primeiro será novoNo
this.qntdno++; //Incrementando a contagem de quantidade de nós
}
public No getAux() {
return aux;
}
public void setAux(No aux) {
this.aux = prim;
}
}
Medical Class:
public class Medicos {
private String nome;
private int crm;
public int getCrm() {
return crm;
}
public void setCrm(int crm) {
this.crm = crm;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
System Class:
public class Sistema {
//static Pacientes P;
//Medicos m;
//m = new Medicos();
//private int crmnovo = 0;
public static void main(String[] args) {
//Pacientes P = new Pacientes();
Lista_Simples ListaPacientes = new Lista_Simples();
Lista_Simples ListaMedicos = new Lista_Simples();
while(true) {
System.out.println("Escolha a ação que deseja executar:"
+ "\n1-Cadastrar Paciente"
+ "\n2-Cadastrar Médico"
+ "\n3-Editar dados do Médico");
System.out.println("Digite o número da ação que deseja executar: ");
Scanner menu = new Scanner(System.in);
int acao = menu.nextInt();
Medicos M = new Medicos();
switch(acao) {
case 1:
int fim2 = 0;
Scanner nomeM = new Scanner(System.in);
System.out.println("\nDigite o nome do médico:");
String nomemedico = nomeM.nextLine();
M.setNome(nomemedico);
System.out.println("\nO nome é "+M.getNome());
Scanner crmM = new Scanner(System.in);
System.out.println("\nDigite o CRM do médico:");
String crm = crmM.nextLine();
M.setNome(crm);
System.out.println("\nO CRM é "+M.getCrm());
do {
ListaMedicos.inserirPrimeiro(M);
fim2++;
break;
}while(fim != 0);
System.out.println(ListaMedicos.imprimirLista(M));
break;
case 2:
//Medicos M = new Medicos();
System.out.println("\nDigite o seu CRM: ");
Scanner editar = new Scanner(System.in);
int crmexiste = editar.nextInt();
//System.out.println("\n"+crmexiste);
while (ListaMedicos.M.getCrm() != crmexiste) {
if (crmexiste != ListaMedicos.M.getCrm()){
//O ERRO ESTÁ AQUI, BASICAMENTE EU NÃO CONSIGO PERCORRER A LISTA DE MÉDICOS, TEM ALGUNS CÓDIGOS QUE COMENTEI AQUI QUE DERAM ERRADO
System.out.println("Erro aqui!");
//ListaMedicos.getAux().setProx(ListaMedicos.getAux());
ListaMedicos.getAux().getProx();
System.out.println(ListaMedicos.getAux());
//ListaMedicos.setAux(ListaMedicos.getAux().getProx());
//ListaMedicos.setAux(ListaMedicos.getAux().getProx());
}
else {
//M2.getListademdc().pesquisarNo(crmexiste);
System.out.println("\nDigite o seu CRM: ");
Scanner novo = new Scanner(System.in);
int novocrm = novo.nextInt();
ListaMedicos.M.setCrm(novocrm);
}
}
break;
}
}
}
}
Thanks in advance for your help!
Does your action "register patient", creates a new doctor? And you need to use chained list or can solve with another structure?
– Gustavo