2012-03-14 206 views
0

基本上我搜索匹配用户之间的元素链表。它基本上是一种约会类型的服务。用户单击搜索按钮并运行代码,编译匹配并将其打印到文本字段。匹配元素

链接到账户类:http://pastebin.com/jnBrcnP1

这里是链表的样子:

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 2012-03-14 07:30:00

+0

你的问题到底是什么? – 2012-03-14 07:31:33

+0

问题是? – 2012-03-14 07:31:36

回答

1

1 )你需要做的第一件事就是创造e)类别(如帐户),具有不同的属性,如“名字”,“姓氏”,“用户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 
} 

现在您可能要创建另一个类,它是一个Account的列表。这个类将处理从列表中获取作为对象的帐户。例如,你可以有方法称为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个节点将创建一个帐户对象,这表明该列表应该是字符串列表而不是帐户列表。所以你的链表应该是:

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

现在转向你的逻辑,我相信你想创建某种基于不同的标准匹配的百分比。如果第一个条件为真,那么匹配百分比是90%。但是这里有个问题,假设第一个条件是真的,所以匹配百分比应该是90%,但问题在于第二个条件将是真实的,不管状态值是什么,因为您使用的是if而不是if else语句。这将是用户混淆,想象一下你的程序显示这样的:

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

这是混乱的,所以你要使用if else语句。

此外,您可能还想创建一个处理文本区域打印的方法。所以,改变你的设计,尽量遵循OOP原则,Java是一种OOP语言并且修正了你的逻辑,你会让你的日期匹配程序运行。