2012-03-19 12 views
0

従業員クラスとLinkedListの実装と別の問題:私がしようとした場合、私は本当に、ここで問題なのか分からない別のクラス

public class EmployeeList 
{ 
Node first; 
Node last; 
int count; 


public EmployeeList() 
{ 
    first = new Node(); 
    first = null; 

    last = new Node(); 
    last = null; 

    count = 0; 
} 

public boolean empty() 
{ 
    return first == null; 
} 

public void add(Employee emp) 
{ 
    Node newEmployee = new Node(); 
    newEmployee.e = emp; 
    newEmployee.e.EnterInfo(); 
    newEmployee.next=null; 

    if(empty()) 
    { 
     first=newEmployee; 
     last=first; 
    }  

    else 
    { 
     last.next = newEmployee; 
     last = last.next; 
    } 

    count++; 
} 

public boolean search(String id) 
{ 
    Node temp = new Node(); 
    Employee emp = new Employee(); 
    temp = first; 

    while(temp!=null) 
    { 
     emp = temp.e; 
     if(id.equals(emp.ID)) 
     { 
      emp.ShowInfo(); 
      return true; 
     } 

     temp=temp.next; 
    } 
    return false; 
} 

public boolean delete(String id) 
{ 
    Employee emp = new Employee(); 

    if(!empty()) 
    { 
     if(first.e.ID.equals(id)) 
     { 
      first=first.next; 
      return true; 
     } 
     else 
     { 
      Node previous = new Node(); 
      Node temp = new Node(); 

      previous = first; 
      temp = first.next; 

      while(temp!=null) 
      { 
       emp = temp.e; 

       if(id.equals(emp.ID)) 
       { 
        count--; 
        previous.next = temp.next; 
        return true; 
       } 

       previous = previous.next; 
       temp = temp.next; 
      } 

      return false; 
     } 
    } 

return false; 
} 

public String ALL() 
{ 
    String all = new String(); 
    Node temp = new Node(); 
    Employee emp = new Employee(); 

    temp = first; 

    while(temp!=null) 
    { 
     emp = temp.e; 
     all = all + emp.ID + "-"; 
     temp = temp.next; 
    } 

    all = all + "null"; 

    return all; 
} 

}

public class Employee 
{ 

String ID; 
String Fname; 
String Lname; 
String City; 
String Major; 
int GPA; 

    public Employee() 
{ 
    GPA = 0; 
} 


public void ShowInfo() 
{ 
    JOptionPane.showMessageDialog(null, "ID: " + ID + "\nFirst Name: " + Fname + "\nLast Name:" + Lname + "\nCity: " + City + "\nMajor: " + Major + "\nGPA: " + GPA); 
} 

public void EnterInfo() 
{ 

    ID = JOptionPane.showInputDialog("Enter Student ID"); 
    Fname = JOptionPane.showInputDialog("Enter Student First Name"); 
    Lname = JOptionPane.showInputDialog("Enter Student Last Name"); 
    City = JOptionPane.showInputDialog("Enter Student City"); 
    Major = JOptionPane.showInputDialog("Enter Student Major"); 
    String gpa = JOptionPane.showInputDialog("Enter Student GPA"); 
    GPA = Integer.parseInt(gpa); 
} 

    } 
} 

リンクリストそれらをすべて印刷するには、最後に入力した値を取得し続けます。

Nodeクラス:任意の結果を得ていないイムを検索することにより

public class Node 
{ 
Employee e = new Employee(); 
Node next; 
} 

は、単に従業員のIDが見つかりません。 EnterInfoメソッドは、変数(ID、Fname .....)の入力用です。

助けが必要ですか?ありがとう。

編集:私はその方法が間違っていることを知っています。私はゲッターとセッターを追加すべきですが、これは先生が始めてこのように始めるように教えてくれた方法です。

+0

実際にコンパイルされたコードを投稿し、呼び出し元の部分が含まれていることを確認してください。デバッガを使用して自分でコードを実行すると、何が起こっているのかを簡単に知ることができます。 Javaコードの規約に従い、変数に 'new'を実行する必要がある時を知りましょう。通常、たとえば検索メソッドには、新しいNodeインスタンスまたはEmployeeインスタンスが含まれてはいけません。 –

+0

より完全なコードを提出する必要があります:ノードとリスト。それ以外の場合、www.geekviewpoint.comにはlinkedListの実装が容易です。 – kasavbere

+0

投稿を編集しましたが、テストクラス以外はすべて投稿されています。 – user1200204

答えて

2

文字列の同等性を間違ってテストしているため、検索に失敗しています。この行:

if(emp.ID == id) 

オブジェクト参照の同等性のテスト。それは、あなたのこの割り当ての対象外です(これはあなたの内の割り当ての範囲外です)内在値のためにのみ動作します。あなたも、それを変更する必要があります。

if(id.equals(emp.ID)) 

をあなたのコードのいくつかの簡単なメモ:

  • あなたが命名にベストプラクティスを、次のされていません。変数は小文字で始まる にする必要があります。
  • プロパティスコープのベストプラクティスに従っていません。あなたのクラス の変数を使用すると、不必要) ノードインスタンス

    ノードの一時=新しいノードを(作成している検索方法の初めに適切なゲッター/セッター

  • で、privateである必要があります。

  • あなたのdelete メソッドで文字列の等価性が間違ってテストされています。

+0

ああ、私は忘れてしまった:今すぐお試しください – user1200204

+0

mm数字を入力しても同じ問題ですが、テキストを入力すると動く...今問題が何であるか分かりません – user1200204

+0

mmm新しい従業員を追加すると、最後の1人を除いてすべて消滅します – user1200204