¿Por qué volver null este controlador de botón en la segunda pasada?

votos
0

El propósito de este controlador de botón es para buscar un árbol binario para una ubicación en un registro dentro de un archivo de acceso aleatorio. El método fillInfoField está ahí para poblar la interfaz gráfica de usuario con los datos devueltos. ¡Cualquier ayuda será apreciada!

    private class HandlerSSN implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        String ssnReqStr = tfReqSSN.getText();
        String num;
        int ssn;

        BalanceOnDemand.Node currNode = null;
        BalanceOnDemand myTree = new BalanceOnDemand();

        if (ssnReqStr.length() == 0) {
            tfMsg.setText(Lookup by Name (partial match allowed));
            tfReqName.requestFocus();
            return;
        } else {
            try {
                raf.seek(0);
                myTree.root = (BalanceOnDemand.Node) ois.readObject();

                num = ssnReqStr.replaceAll([^0-9], );
                ssn = Integer.parseInt(num);
                currNode = myTree.find(ssn);
                System.out.println(currNode);
                if(currNode != null){
                    raf.seek(currNode.loc - REC_LEN);
                    fillInfoFields(readCurrRec());
                }else{
                    System.out.println(Test);
                    tfMsg.setText(SSN \ + tfReqSSN.getText() + \ was not found);
                    return;
                }

            } catch (IOException | ClassNotFoundException e) {
                System.out.println(currNode.id);
                tfMsg.setText(SSN \ + tfReqSSN.getText()
                        + \ was not found);
            }
        }

    }
}

Aquí está el método de búsqueda si desea verlo.

public Node find(int key)
{
Node current;
current = root;

while(current!=null && current.id!=key)
  {
    if(key<current.id){
      current = current.left;
    }else{
      current = current.right;
    }
  }
  return current;

}

  class Node implements Serializable

{

private static final long serialVersionUID = 1L;
public int    id;
public int    loc;
public Node   left;
public Node   right;

    public Node(int i,int i2)
    {
      id    = i;
      loc  = i2;
      left  = null;
      right = null;
    }
  }
Publicado el 02/12/2013 a las 00:48
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

He resuelto esto por mi cuenta. Que necesitaba para volver a crear una instancia de cada uno de los flujos de entrada. Aquí está el código que añade a la parte superior del controlador de botón.

        try
        {
          fis = new FileInputStream("treeObject.dat");
          ois = new ObjectInputStream(fis);
        }
        catch (IOException e)
        {
          e.printStackTrace();
        }
Respondida el 02/12/2013 a las 02:42
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more