Bom, espero que alguém aqui possa me ajudar, pois meu tempo é curto. :lol:
Bom, vamos lá:
To trabalhando num projetinho de Engenharia de software para a faculdade mas to preso nessa parte que mensionei no título. O Projeto é o seguinte, preciso utilizar arquivo (serializable) para gerenciar um hotel. Já fiz a parte de cadastro de clientes e apartamentos, porém estou preso no controle de contas. Ainda estou aprendendo java e por isso ainda não consegui sair do lugar e o projeto deve ser entregue na segunda feira.
Bom, sem ficar falando muito vou direto ao ponto, tirando alguns erros no cadastro e ao excluir, esse problema não me deixa concluir o projeto. Alguém poderia me ajudar por favor?
se você colocar o código aqui fica mais fácil pra te responderem…
nem todo mundo tem tempo pra baixar e ficar olhando onde está o erro em um projeto inteiro…
coloque o codigo da parte que está com erro.
I
ikectop
Tudo bem, posso até colocar o local onde está o erro sim, porém acho que será dificil por aí alguém achar o erro desta forma sabe.
Acho q se a pessoa rodasse o programa acharia o erro bem facil.
Mas de qualquer forma, segue a classe que está dando o erro:
//Gerencia o fechamento da conta do clientepublicclassControleDeConta{Scannerinput=newScanner(System.in);Clientecliente=newCliente();Apartamentoapartamento=newApartamento();Vector<Cliente>vetorCliente=newVector<Cliente>();Vector<Apartamento>vetorApartamento=newVector<Apartamento>();Arquivoarquivo=newArquivo();staticMenuview=newMenu();//Método que controla a entrada do cliente no apartamentopublicvoidentrarApartamento(){Stringcliente=null;StringnumeroApartamento=null;StringdataEntrada=null;StringdataSaida=null;intposCliente=-1;intposApartamento=-1;intauxCliente=0;intauxApartamento=0;System.out.println("Digite o nome do cliente: ");cliente=input.next();System.out.println("Digite o numero do Apartamento solicitado: ");numeroApartamento=input.next();System.out.println("Digite a data de entrada no Apartamento: [DD/MM/AAAA]");dataEntrada=input.next();System.out.println("Digite a data de saída do Apartamento: [DD/MM/AAAA]");dataSaida=input.next();arquivo.varreArquivoCliente();vetorCliente=arquivo.getVectorCliente();for(Clienteclient:vetorCliente){posCliente++;if(client.getNome().equals(cliente)){auxCliente++;arquivo.varreArquivoApartamento();vetorApartamento=arquivo.getVectorApartamento();for(Apartamentoap:vetorApartamento){posApartamento++;if(ap.getNumeroApartamento().equals(numeroApartamento)){auxApartamento++;// O ERRO OCORRE AQUIif(ap.getStatusApartamento().equals("Indisponivel")){System.out.println("Apartamento Indisponível no momento.");System.out.println("Indisponível até: "+ap.getDataSaida());System.out.println("");}if(ap.getStatusApartamento().equals("Reservado")){if(ap.getDataReserva()!=null){System.out.println("Apartamento Reservado");}else{System.out.println("Digite a data para a reserva: ");StringdataReserva=input.next();ap.setDataReserva(dataReserva);System.out.println("A diária do Apartamento é de: "+ap.getPreco()+"Reais");arquivo.excluirNoVetorApartamento(posApartamento);arquivo.salvaNoVetor(ap);arquivo.salvaArquivoAp();System.out.println("Apartamento reservado.");}}if(ap.getStatusApartamento().equals("Disponível")){ap.setDataEntrada(dataEntrada);System.out.println("A diária do Apartamento é de: "+ap.getPreco()+"Reais");ap.setStatusApartamento("Indisponivel");ap.setDataSaida(dataSaida);arquivo.excluirNoVetorApartamento(posApartamento);arquivo.salvaNoVetor(ap);arquivo.salvaArquivoAp();System.out.println("Apartamento liberado");}}}if(auxApartamento==0)System.out.println("Não foi possível encontrar o apartamento.");}}if(auxCliente==0)System.out.println("Não foi possível encontrar o cliente.");}//Método responsável por reservar o apartamentopublicvoidreservarApartamento(){Stringnome=null;StringnumeroApartamento=null;StringdataReserva=null;StringdataEntrega=null;intposCliente=-1;intposApartamento=-1;intauxCliente=0;intauxApartamento=0;Menuview=newMenu();System.out.println("Digite o nome do cliente: ");nome=input.next();System.out.println("Digite o numero do Apartamento solicitado: ");numeroApartamento=input.next();System.out.println("Digite a data inicial da estadia: [DD/MM/AAAA]");dataReserva=input.next();System.out.println("Digite a data final da estadia: [DD/MM/AAAA]");dataEntrega=input.next();arquivo.varreArquivoCliente();vetorCliente=arquivo.getVectorCliente();for(Clienteclient:vetorCliente){posCliente++;if(client.getNome().equals(nome)){auxCliente++;arquivo.varreArquivoApartamento();vetorApartamento=arquivo.getVectorApartamento();for(Apartamentoap:vetorApartamento){posApartamento++;if(ap.getNumeroApartamento().equals(numeroApartamento)){auxApartamento++;// O ERRO OCORRE AQUIif(ap.getStatusApartamento().equals("Indisponivel")){System.out.println("Apartamento reservado até: "+ap.getDataSaida());System.out.println("Reservar apartamento? [s/n] ");Stringop=input.next();if(op=="s"){System.out.println("Data da reserva: [DD/MM/AAAA]");dataReserva=input.next();if(ap.getDataReserva()!=null){System.out.println("Este apartamento não pode ser reservado");}else{ap.setDataReserva(dataReserva);arquivo.excluirNoVetorApartamento(posApartamento);arquivo.salvaNoVetor(ap);arquivo.salvaArquivoAp();System.out.println("Apartamento reservado.");view.menu();}}}if(ap.getStatusApartamento().equals("Reservado")){System.out.println("Apartamento Indisponível no momento.");view.menu();}if(ap.getStatusApartamento().equals("Disponível")){System.out.println("Digite a data da reserva: [DD/MM/AAAA]");dataReserva=input.next();if(ap.getDataReserva()!=null){System.out.println("Não foi possível reservar o apartamento.");}else{ap.setDataReserva(dataReserva);arquivo.excluirNoVetorApartamento(posApartamento);arquivo.salvaNoVetor(ap);arquivo.salvaArquivoAp();System.out.println("Apartamento Reservado");view.menu();}}}}if(auxApartamento==0)System.out.println("Não foi possivel encontrar o apartamento");}}if(auxCliente==0)System.out.println("Não foi possivel encontrar o cliente");}//Verifica de o apartamento está disponívelpublicvoiddisponivelApartamento(){StringnumeroApartamento=null;System.out.println("Digite o numero do apartamento: ");numeroApartamento=input.next();arquivo.varreArquivoApartamento();vetorApartamento=arquivo.getVectorApartamento();intaux=0;for(Apartamentoap:vetorApartamento){if(ap.getNumeroApartamento().equals(numeroApartamento)){aux++;System.out.println("Numero do Apartamento: "+ap.getNumeroApartamento());System.out.println("Status: "+ap.getStatusApartamento());if(ap.getDataReserva()!=null){System.out.println("Possui uma reserva para: "+ap.getDataReserva());}}}if(aux==0){System.out.println("Apartamento não encontrado!");System.out.println();}}//cancela reserva de apartamentopublicvoidcancelarReserva(){StringnumeroApartamento=null;System.out.println("Digite o numero do apartamento:");numeroApartamento=input.next();arquivo.varreArquivoApartamento();vetorApartamento=arquivo.getVectorApartamento();intpos=-1;for(Apartamentoap:vetorApartamento){pos++;if(ap.getNumeroApartamento().equals(numeroApartamento)){ap.setDataReserva(null);arquivo.excluirNoVetorApartamento(pos);arquivo.salvaNoVetor(ap);arquivo.salvaArquivoAp();view.menu();}}System.out.println("Não foi possível cancelar a reserva.");view.menu();}//Calcula a conta do clientepublicvoidquitarDebito(){StringnumeroApartamento=null;intnDias=0;intposApartamento=-1;intauxApartamento=0;Stringdia=null,mes=null,ano=null;StringdiaA=null,mesA=null,anoA=null;intda=0,dm=0,dd=0;doublevalorPagar=0;System.out.println("..:: Controle de caixa do Hotel Serrano ::.. ");System.out.println("Digite o numero do apartamento: ");numeroApartamento=input.next();System.out.println("Informe a data de hoje: [DD/MM/AAAA] ");StringdataHoje=input.next();String[]auxHoje=dataHoje.split("/");Integerconvert=newInteger(10);arquivo.varreArquivoApartamento();vetorApartamento=arquivo.getVectorApartamento();for(Apartamentoap:vetorApartamento){posApartamento++;if(ap.getNumeroApartamento().equals(numeroApartamento)){auxApartamento++;Stringtesta=ap.getDataEntrada();String[]auxEntrega=testa.split("/");intflag=0;//verifica data de hoje e de quando o cliente saiu do apartamentofor(Stringvalor:auxHoje){if(flag==0)dia=valor;if(flag==1);mes=valor;if(flag==2)ano=valor;flag++;}flag=0;for(Stringvalor:auxEntrega){if(flag==0)diaA=valor;if(flag==1);mesA=valor;if(flag==2)anoA=valor;flag++;}//calcula quantos dias o apartamento ficou com o clienteif(ano!=anoA){convert=Integer.parseInt(ano)-Integer.parseInt(anoA);da=convert;nDias=365*da;}if(mes!=mesA){convert=Integer.parseInt(mes)-Integer.parseInt(mesA);dm=convert;nDias=nDias+(dm*30);}if(dia!=diaA){convert=Integer.parseInt(dia)-Integer.parseInt(diaA);dd=convert;nDias=nDias+(Math.abs(dd));}valorPagar=(nDias*ap.getPreco());System.out.println("Total: R$ "+valorPagar);ap.setDataEntrada(null);ap.setDataSaida(null);ap.setStatusApartamento("Disponível");arquivo.excluirNoVetorApartamento(posApartamento);arquivo.salvaNoVetor(ap);arquivo.salvaArquivoAp();}}}}
Ataxexe
E o erro? Coloque o stacktrace para nós.
Arrisco dizer que ap.getStatusApartamento() == null
Coloque a constante primeiro na expressão, como por exemplo:
"Indisponivel".equals(ap.getStatusApartamento())
I
ikectop
Opa galera, esqueci mesmo. Mas tá ae. Qualquer coisa vc vão me pedindo ok???
Flw ae pessoal.
Exception in thread "main" java.lang.NullPointerException
at control.ControleDeConta.entrarApartamento(ControleDeConta.java:64)
at view.Menu.menu(Menu.java:202)
at control.Main.main(Main.java:13)
H
hugov
Você está utilizando alguma IDE, se estiver usando uma IDE tente debugar linha-a-linha para saber o que esta acontecendo.
Não adianta as pessoas te ajudarem a achar o erro mais simples de resolver em Java.
NullPointerException é um erro que você mais ver na sua vida de Programador Java.
Não estou querendo levantar polêmica aqui, e apenas a minha opinião.