Ajuda com erro de ponteiro

Boa tarde pessoal,

Estou fazendo um projeto de Fila de Banco com prioridade para a faculdade com as seguintes requisitos:

  • Pessoa retirar senha; (preenche os dados na tela e assim é criado objeto)
  • Enfileirar dependendo dependendo da prioridade,
  • Funcionário chama senha por prioridade
  • Exibir pessoa chamada.

Eu fiz tudo da forma que eu aprendei, porém esta dando algum erro de ponteiro nulo que não estou conseguindo entender, alguém conseguiria por favor me ajudar a entender onde estou errando?

	at classes.Fila.temProximo(Fila.java:97)
	at bean.Bean.retirarSenha(Bean.java:54)
	at view.TelaFuncionario.btnChamarSenhaActionPerformed(TelaFuncionario.java:99)
	at view.TelaFuncionario.access$000(TelaFuncionario.java:13)
	at view.TelaFuncionario$1.actionPerformed(TelaFuncionario.java:43)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6533)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6298)
	at java.awt.Container.processEvent(Container.java:2236)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
	at java.awt.Container.dispatchEventImpl(Container.java:2280)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at classes.Fila.temProximo(Fila.java:97)
	at bean.Bean.retirarSenha(Bean.java:54)
	at view.TelaFuncionario.btnChamarSenhaActionPerformed(TelaFuncionario.java:99)
	at view.TelaFuncionario.access$000(TelaFuncionario.java:13)
	at view.TelaFuncionario$1.actionPerformed(TelaFuncionario.java:43)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6533)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6298)
	at java.awt.Container.processEvent(Container.java:2236)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
	at java.awt.Container.dispatchEventImpl(Container.java:2280)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) ```


classe controler:

package bean;

import classes.Funcionario;
import classes.Fila;
import classes.Pessoa;

/**
*

  • @author Rafael H. Aguiar
    */
    public class Bean {

     Fila filaNormal = new Fila();
     
     Fila filaPreferencial = new Fila();
     
     public boolean retirarSenha(Pessoa pessoa){
        
        boolean validaSenha = false;
        if(!pessoa.getNome().isEmpty() || !pessoa.getCpf().isEmpty()){
            if(pessoa.isTipoDeSenha()){
                filaPreferencial.enfileirar(pessoa);   
            }else{
                filaNormal.enfileirar(pessoa);
            }
            validaSenha = true;              
        }
        
        return validaSenha;
     }
     
     public Object retirarSenha(){
         if(filaPreferencial.temProximo()){
             return filaPreferencial.desenfileirar();
         }else{     
             return filaNormal.desenfileirar(); 
         }
     }
    

} // fim Bean

classe da fila:

package classes;

/**
*

  • @author Rafael H. Aguiar
    */
    public class Fila {

    public Fila() {
    }

    public Fila(Object[] fila, int ponteiroInicio, int ponteiroPercorrer, int ponteiroFim, int total) {
    this.fila = new Object[10];
    this.ponteiroInicio = 0;
    this.ponteiroPercorrer = 0;
    this.ponteiroFim = 0;
    this.total = 0;
    }

    public Object fila[];
    private int ponteiroInicio;
    private int ponteiroPercorrer;
    private int ponteiroFim;
    private int total;

    public int getPonteiroInicio() {
    return ponteiroInicio;
    }

    public void setPonteiroInicio(int ponteiroInicio) {
    this.ponteiroInicio = ponteiroInicio;
    }

    public int getPonteiroPercorrer() {
    return ponteiroPercorrer;
    }

    public void setPonteiroPercorrer(int ponteiroPercorrer) {
    this.ponteiroPercorrer = ponteiroPercorrer;
    }

    public int getPonteiroFim() {
    return ponteiroFim;
    }

    public void setPonteiroFim(int ponteiroFim) {
    this.ponteiroFim = ponteiroFim;
    }

    public int getTotal() {
    return total;
    }

    public void setTotal(int total) {
    this.total = total;
    }

    @Override
    public String toString() {
    return “Fila{” + “fila=” + fila + “, ponteiroInicio=” + ponteiroInicio + “, ponteiroPercorrer=” + ponteiroPercorrer + “, ponteiroFim=” + ponteiroFim + “, total=” + total + ‘}’;
    }

    public void enfileirar(Object cliente){
    if(cheia()){
    throw new RuntimeException(“Fila cheia”);
    }

    fila[getPonteiroFim()] = cliente;
    setTotal(total++);
    }

    public Object desenfileirar(){
    if(vazia()){
    throw new RuntimeException(“Fila vazia”);
    }
    Object cliente = fila[getPonteiroInicio()];
    setPonteiroInicio(ponteiroInicio++);
    setTotal(total–);
    return cliente;
    }

    public boolean cheia(){
    return total == fila.length;
    }

    public boolean vazia(){
    return total == 0;
    }

    public boolean temProximo(){
    return fila[getPonteiroInicio() + 1] != null;
    }

}

classe da pessoa

package classes;

/**
*

  • @author Rafael H. Aguiar
    */
    public class Pessoa {

    public Pessoa() {
    }

    private String nome, cpf;
    private int senha;
    private boolean tipoDeSenha;

    public Pessoa(String nome, String cpf, int senha, boolean tipoDeSenha) {
    this.nome = nome;
    this.cpf = cpf;
    this.senha = senha;
    this.tipoDeSenha = tipoDeSenha;
    }

    public String getNome() {
    return nome;
    }

    public void setNome(String nome) {
    this.nome = nome;
    }

    public String getCpf() {
    return cpf;
    }

    public void setCpf(String cpf) {
    this.cpf = cpf;
    }

    public int getSenha() {
    return senha;
    }

    public void setSenha(int senha) {
    this.senha = senha;
    }

    public boolean isTipoDeSenha() {
    return tipoDeSenha;
    }

    public void setTipoDeSenha(boolean tipoDeSenha) {
    this.tipoDeSenha = tipoDeSenha;
    }

    @Override
    public String toString() {
    return “Pessoa{” + “nome=” + nome + “, cpf=” + cpf + “, senha=” + senha + “, tipoDeSenha=” + tipoDeSenha + ‘}’;
    }
    }

método na tela da pessoa (cliente) pedir senha:
private void btnRetirarSenhaActionPerformed(java.awt.event.ActionEvent evt) {                                                

    Pessoa pessoa = new Pessoa();
    String nomeCliente = txtNome.getText();
    String cpf = txtCPF.getText();
    boolean preferencial = jCheckPreferencial.isSelected();
    int senha = 0; // substituit por método criador de senha; 
    pessoa.setNome(nomeCliente);
    pessoa.setCpf(cpf);
    pessoa.setTipoDeSenha(preferencial);
    pessoa.setSenha(senha);
    Bean b = new Bean();
    boolean validarSenha = b.retirarSenha(pessoa);
 
    if(validarSenha == false){
       lblErroSenha.setText("Necessário preencher todos os campos "
                                        + "indicados com o: *");
   }
}    

método na tela do funcionário chamar senha:
private void btnChamarSenhaActionPerformed(java.awt.event.ActionEvent evt) {                                               
    Bean b = new Bean();
    lblDados.setText(b.retirarSenha().toString());
   
}    

O erro que está estourando é o IndexOutOfBoundsException? Se for, a razão é que você está tentando acessar a enésima + 1 posição do array, que, não existe.
Inclua uma validação referente à posição do vetor que está sedo analisada.

1 curtida