2014-10-12 127 views
0

如何搜索arraylist中的元素並顯示它?例如是用戶想要搜索的代碼A25然後將打印的全部內容上的ArrayList,他只搜索和輸出是A25 CS 212層的數據結構3.ArrayList中的搜索元素

Subject CS212 = new Subject("A25","\t\tCS 212","\t\tData Structures\t\t\t\t",units); 
    Subject IT312 = new Subject("A26","\t\tIT 312","\t\tData Base Management System 2\t\t",units); 
    Subject IT313 = new Subject("A27","\t\tIT 312","\t\tData Base Management System 2\t\t",units); 
    Subject CS313 = new Subject("A29","\t\tCS 313","\t\tDigital Designt\t\t\t\t",units); 
    Subject Disc = new Subject("A30","\t\tIT 212","\t\tDiscrete Structurest\t\t",units); 
    Subject A31 = new Subject("A31","\t\tIT 212","\t\tDiscrete Structurest\t\t",units); 
    Subject Engl3 = new Subject("984","\t\tEngl 3","\t\tSpeech and oral Communicationt\t\t",units); 
    Subject Theo3 = new Subject("582","\t\tTheo 3","\t\tChrist and Sacramentst\t\t",units); 
    Subject Stat = new Subject("470","\t\tStata1","\t\tProbablility and Statisticst\t\t",units); 
    Subject Dota = new Subject("999","\t\tDota 2","\t\tDota Guide\t\t\t\t",units); 

    ArrayList<Subject> arrList = new ArrayList<Subject>(); 

    arrList.add(CS212); 
    arrList.add(IT312); 
    arrList.add(IT313); 
    arrList.add(CS313); 
    arrList.add(Disc); 
    arrList.add(A31); 
    arrList.add(Engl3); 
    arrList.add(Theo3); 
    arrList.add(Stat); 
    arrList.add(Dota); 
//User input that he wants to search 
for(int i = 0; i < 3; i++,num++) 
    { 

     System.out.print("\t\t"+num +". "); 
     codeNo[i] = scan.next(); 
     String output = Character.toUpperCase(codeNo[i].charAt(0)) + codeNo[i].substring(1); 
     codeNo[i] = output; 
    } 

     // This is what I tried but it doesn't work Idk why 
     for (Subject s : arrList) { 

      for(int i =0; i < codeNo.length; i++) 

        if (s.equals(codeNo[i])) { 

        System.out.println("\t\t\t"+s); 



        } 

      } 

public Subject(String codeNo, String subjectID, String title , int unit) 
{ 
//Constructor . . 
} 
//Desired output 
Code to search 
A25 
A26 
A27 
output 
A25  CS 212  Data Structures   3 
A26  IT 312  Data Base Management System 2 3 
A27  IT 312  Data Base Management System 2 3 
+0

什麼是實際輸出? – DreadHeadedDeveloper 2014-10-12 00:54:11

+2

假設輸入正常工作,您應該執行s.code.equals(codeNo [i])而不是s.equals(codeNo [i])。您現在正在比較主題對象。 – 2014-10-12 00:56:58

回答

0

您正在查找的ArrayList科目,您需要編寫一個小函數來將代碼字符串與類的相應字符串進行比較。您可以通過將此添加到您的主題類來完成此操作。

例子:

@Override 
public boolean equals(String code) { 
    return code.equals(this.<compare to member>); 
} 

,改變比較成員需要匹配你匹配的代碼。

編輯:更簡單的方法做的是隻是現有的代碼更改爲:

if (s.code.equals(codeNo[i])) //assuming your code class member is a public string