2012-03-14 10 views
0

基本的に、リンクされたリストを検索して、ユーザー間で一致する要素を探しています。それは基本的にデートタイプのサービスです。ユーザーが検索ボタンをクリックするとコードが実行され、一致がコンパイルされ、テキストフィールドに出力されます。クラスアカウントにリンクされたリスト内の要素の一致

リンク:ここ

tobi 
tobi123 
[email protected] 
tobi 
Mixed Breed 
Male 
1-2 
Virginia 
Walking 
peppy 
peppy123 
[email protected] 
peppy 
Chihuahua 
Male 
5-6 
Virginia 
Eating 

私のボタンのコードです:

private void jButtonS1ActionPerformed(java.awt.event.ActionEvent evt) { 
    LinkedList<Account> account = new LinkedList<Account>(); 
    String username = jTextFieldS1.getText(); 

    if(username.equals("")) // If password and username is empty > Do this >>> 
    { 
     jButtonS1.setEnabled(false); 
     jTextFieldS1.setText(""); 
     jButtonS1.setEnabled(true); 
     this.setVisible(true); 
    } 
    else 
    { 

     for(Account acc : account) 
     { 
      if(acc.getUsername().equals(username)){ 
       acc.goToNext(); 
       acc.goToNext(); 
       acc.goToNext(); 
       acc.goToNext(); 
       String breed = acc.getDataAtCurrent(); 
       acc.goToNext(); 
       String gender = acc.getDataAtCurrent(); 
       acc.goToNext(); 
       acc.goToNext(); 
       String state = acc.getDataAtCurrent(); 

       if(acc.getUsername().equals(username)== false && acc.getBreed().equals(breed) && acc.getGender().equals(gender)== false && acc.getState().equals(state)){ 
        String match = acc.getUsername(); 
        jTextAreaS1.setText("User: " + match + "is a 90% match!"); 
       } 

       if(acc.getUsername().equals(username)== false && acc.getBreed().equals(breed) && acc.getGender().equals(gender)== false){ 
        String match = acc.getUsername(); 
        jTextAreaS1.setText("User: " + match + "is a 70% match!"); 
       } 

       if(acc.getUsername().equals(username)== false && acc.getBreed().equals(breed) && acc.getState().equals(state)){ 
        String match = acc.getUsername(); 
        jTextAreaS1.setText("User: " + match + "is a 70% match!"); 
       } 

       if(acc.getUsername().equals(username)== false && acc.getState().equals(state) && acc.getGender().equals(gender)== false){ 
        String match = acc.getUsername(); 
        jTextAreaS1.setText("User: " + match + "is a 70% match!"); 
       } 

       if(acc.getUsername().equals(username)== false && acc.getBreed().equals(breed)){ 
        String match = acc.getUsername(); 
        jTextAreaS1.setText("User: " + match + "is a 50% match!"); 
       } 

       if(acc.getUsername().equals(username)== false && acc.getGender().equals(gender)== false){ 
        String match = acc.getUsername(); 
        jTextAreaS1.setText("User: " + match + "is a 50% match!"); 
       } 

       if(acc.getUsername().equals(username)== false && acc.getState().equals(state)){ 
        String match = acc.getUsername(); 
        jTextAreaS1.setText("User: " + match + "is a 50% match!"); 
       } 

      } 

     } 

     try 
     { 
      read(account, "doggydates.txt"); 
     } catch (Exception e) 
     { 
      System.err.println(e.toString()); 
     } 
    } 
} 
+1

これは質問ですか?ここであなたが達成する必要があるのは何ですか?それに言及してください。 – Rakesh

+0

あなたの質問は何ですか? –

+0

そして、質問は? –

答えて

1

1ここでhttp://pastebin.com/jnBrcnP1

は、リンクリストのように見えるものです)あなたがする必要がある最初のことは、creatすることです'名字'、 '姓'、 'ユーザーID'、 '品種'などの異なる属性を持つクラス(アカウント)を指定します。2)ユーザーから詳細を収集するたびに、アカウントのオブジェクトを作成しますすべての属性を格納することができます(すべての属性でパラメータ化されたコンストラクタを使用できます)。

例:Account acc=new Account(FirstName,Age,Sex,Breed...);

3)コレクションにこれらを保存し、あなたは、単にgetBreed()またはgetAge()

4を行うことができるように、後でそれを使用)ではなく、少なくとも最後に、休憩を取る、あなたをクリアあなたが実装しようとしているものを設計してから、システムにヒットしてください。

0

ここにいくつかの事柄がありますが、まずこれは疑問ではありません。あなたはあなたのプログラムを書いています。それだけですが、あなたのコードをスキャンすると、複数の問題があります。

あなたの最初の問題はデザインです。明らかに名前、ユーザー名、メールアドレス、品種、性別などを自由に設定できるアカウントというエンティティがあります。 OOPに従う場合はクラスを作成するか、OOPをスキップする場合は単に構造を作成する必要があります。あなたはJavaを使用しているので、OOPソリューションを使うべきだと思います。それはあなたの人生を楽にします。

public class account { 
    private String name, user_name, email, .... ; 
    // constructor 
    // getters and setters 
} 

ここで、アカウントのリストである別のクラスを作成することができます。このクラスは、リストからオブジェクトを取得することを処理します。たとえば、getNextAccountというメソッドがあり、リスト内を移動して文字列を取得し、アカウントオブジェクトを作成します。例えば

Account getNextAccount() { 
    // seek to the starting position of this account 
    String name = acc.goToNext(); 
    String username = acc.goToNext(); 
    .... 
    return new Account(name, username, ...); 
} 

あなたのコード:

LinkedList<Account> account = new LinkedList<Account>(); 

が正しくありません。あなたが持っているリンクされたリストに基づいて、リストの9ノードが、このリストがアカウントリストではないStringリストであることを示唆するアカウントオブジェクトを作成するように見えます。あなたのリンクされたリストは以下のようになります:

LinkedList<String> accountsList = new LinkedList<String>(); 

ロジックに目を向けると、異なる基準に基づいてある種の一致率を作成したいと考えています。最初のif条件がtrueの場合、一致率は90%です。しかし、ここに問題があります。最初のif条件が真であるので一致するパーセンテージが90%であるとしますが、if elseの文ではなくifを使用しているため、2番目のif条件も真になるとします。これは、ユーザーのために混乱することがあなたのプログラムがこれを表示することを想像します:あなたはif elseステートメントを使用したいので

User: <user_name> is a 90% match! 
User: <user_name> is a 70% match! 

これは、紛らわしいです。

また、テキスト領域での印刷を処理するメソッドを作成することもできます。あなたのデザインを変えて、OOPの原則に従おうとすると、JavaはOOP言語であり、あなたのロジックを修正します。

関連する問題