Pourquoi retourner ce gestionnaire de bouton null dans la deuxième manche?

voix
0

Ce bouton but de gestionnaire est de rechercher un arbre binaire pour un emplacement à un enregistrement dans un fichier d'accès aléatoire. La méthode fillInfoField est là pour remplir l'interface graphique avec les données renvoyées. Toute aide est la bienvenue!

    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);
            }
        }

    }
}

Voici la méthode de recherche si vous souhaitez le voir.

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;
    }
  }
Créé 02/12/2013 à 00:48
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Je résolu ce problème moi-même. Je besoin de ré-instancier chacun des flux d'entrée. Voici le code que j'ajouté en haut du gestionnaire de bouton.

        try
        {
          fis = new FileInputStream("treeObject.dat");
          ois = new ObjectInputStream(fis);
        }
        catch (IOException e)
        {
          e.printStackTrace();
        }
Créé 02/12/2013 à 02:42
source utilisateur

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