0

テキストフィールドに書いたものは何でも保存し、検索ボタンをクリックした後にプログラムが見つけた行を削除したいと思います。なぜ機能しないのですか?ここに私の2つのボタンがあります:

private class dDelete implements ActionListener {
    public void actionPerformed (ActionEvent e) {
        HM.remove((String)result.getText());
    }
}

private class sSave implements ActionListener {
  public void actionPerformed (ActionEvent e) {    
     Set <String> ISet = HM.keySet();
     Iterator itr = ISet.iterator();
     String tuple = "";

     java.io.File iwrite = new java.io.File("c:\\temp\\savetest.txt");
     if (iwrite.exists()){
         System.out.println("The file exists");
         System.exit(0);
     }
     java.io.PrintWriter output = null;
     try {
         output = new java.io.PrintWriter(iwrite);
     } catch(Exception ex) {
         ex.printStackTrace();
     }

     while (itr.hasNext()) {
         String Keys = (String)itr.next();
         String val = HM.get(Keys);
         tuple = Keys + " " + val;

         output.print(tuple);
     }
  }
}
4

1 に答える 1

3

output.close()それが理由である可能性がある出力ライターを閉じる必要があります。

セットHMに追加しているものを表示していないので、削除が機能するかどうかを判断するのは困難です。HM.removeの呼び出しの戻り値を確認すると、成功するかどうかがわかります。成功しない場合は、間違ったキーを使用しています(削除として追加するときに同じ/等しいキーを使用していません)。

それ以外に、キーと値(HM.entrySet())の両方が必要な場合は、entrySetを反復処理することをお勧めします。

また、Javaの命名規則に従ってクラスと変数の名前を変更します(クラスは大文字で始まり、インスタンス変数は大文字で始まるべきではありませんなど)。詳細については。Javaの命名規則を参照してください。

于 2012-05-01T22:42:31.343 に答える