_Rest_ Posted April 6, 2015 at 06:48 PM Report Share #580866 Posted April 6, 2015 at 06:48 PM Boas, alguém me consegue explicar o porquê disto acontecer? Tenho uma classe "Especialidades" em que guarda o nome da especialidade, uma lista onde guarda os ID's dos médicos dessa especialidade e o Tipo de Sala que é usado. O que está a acontecer é que o TipoSala está a variar, por exemplo: Eu crio duas especialidades e tenho este output Especialidade: Fisioterapia Médicos: [1, 2] Tipo de Sala: S Especialidade: Cardiologia Médicos: [3] Tipo de Sala: S Depois ao criar outra fico com: Especialidade: Fisioterapia Médicos: [1, 2] Tipo de Sala: F Especialidade: Cardiologia Médicos: [3] Tipo de Sala: F Especialidade: Psiquiatria Médicos: [] Tipo de Sala: F Ao ter atribuído o tipo F, ele mudou em todos os registos... E quando volto a entrar na aplicação e faço o Mostrar() ele dá este output Especialidade: Fisioterapia Médicos: [1, 2] Tipo de Sala: null Especialidade: Cardiologia Médicos: [3] Tipo de Sala: null Especialidade: Psiquiatria Médicos: [] Tipo de Sala: null static String EscSala () { String SL; boolean flag=true; Scanner Dados = new Scanner(System.in); for (Salas S : GB.LSalas) { System.out.println("TipoSala: "+S.TipoSala); System.out.println("Designação: "+S.Designacao); } while (true) { System.out.print("Escolha o tipo de Sala: "); SL = Dados.next(); for (Salas S : GB.LSalas) { if (SL.equals(S.TipoSala)) { flag=false; break; } } if(flag==true) { System.out.println("Sala Inválida"); } else {break;} } return SL; } Especialidades() { Scanner Dados = new Scanner(System.in); System.out.println("Introduza os dados"); System.out.print("Especialidade: "); Especialidade = Dados.next(); System.out.println("Salas Existentes: "); TipoSala = EscSala(); while (true) { System.out.println("Pretende adicionar Médicos á especialidade?"); GB.S_N(); opt = Dados.nextInt(); if (opt==1) { for (Funcionario F : GB.Funcionarios) { F.EscolherMedico(); } System.out.println("Introduza o ID do Médico"); ID = Dados.nextInt(); for (Funcionario F : GB.Funcionarios) { if (ID==F.ID_Funcionario) { Medicos.add(ID); i=-1; break; } } if (i!=-1) { System.out.println("Médico Inválido"); } } else if (opt==2) { break; } } } void MostrarE() { System.out.println("Especialidade: "+Especialidade); System.out.println("Médicos: "+Medicos); System.out.println("Tipo de Sala: "+TipoSala); System.out.println(""); } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 6, 2015 at 06:57 PM Report Share #580867 Posted April 6, 2015 at 06:57 PM onde na função de leitura de dados estás a ler o tipo de sala ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
_Rest_ Posted April 6, 2015 at 07:05 PM Author Report Share #580870 Posted April 6, 2015 at 07:05 PM Não sei se percebi a pergunta, se me estás a perguntar onde guarda o valor, está lá TipoSala = EscSala(); em que a função EscSala dá return SL que é a string que devolve o tipo de Sala. Se me estás a perguntar onde lê para dar print no ecrã, está mesmo no fim na função MostrarE(); Link to comment Share on other sites More sharing options...
Solution HappyHippyHippo Posted April 6, 2015 at 07:09 PM Solution Report Share #580871 Posted April 6, 2015 at 07:09 PM tira o static da função "EscSala" IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
_Rest_ Posted April 6, 2015 at 07:22 PM Author Report Share #580872 Posted April 6, 2015 at 07:22 PM Epá que estupidez... já a bocado tive a queimar porque tinha um = em vez de um <. Não era o static da função mas sim da variavél, tinha assim public class Especialidades implements Serializable { int opt=0,ID,i; String Especialidade; List<Integer> Medicos = new ArrayList<Integer>(); static String TipoSala; Obrigado pela ajuda Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now