2017-01-27 142 views
0

我想要做的下面的方法是尋找一個特定的學生在一個數組列表中,名稱和唯一編號(HUN)分別匹配鍵和keyInt。一旦找到該學生,它應該添加到本地數組列表returnStudent並返回它。但行returnStudent.add(student(i));給我一個錯誤,我不知道如何解決它,我需要它將特定的學生添加到本地數組列表。搜索並添加到數組列表

public ArrayList<Student1> searchByKey(String key, int keyInt) 
{ 
    ArrayList<Student1> returnStudent = new ArrayList<Student1>(); 
    Student1 student = new Student1(key); 
    int i = 0; 
    while(i <= students.size()) 
    { 
     if(student.getName().equals(key) && student.getHUN() == keyInt) 
     { 
      return Student.add(student(i)); 
     } 
     i=i+1; 
    } 
    return returnStudent; 
} 

在此先感謝。

+2

使用'我

+1

'給我一個錯誤'..那是什麼錯誤? – Null

+1

學生和學生是不同的? – cuongptnk

回答

0

變化

returnStudent.add(student(i)); 

returnStudent.add(student); // student is the element 

添加到特定索引,使用 -

returnStudent.add(i, student); // i is the index to add element at 

- 既然你已經初始化i=0你SHA將遍歷i < students.size(),或者您最終可能會在列表中訪問get(i)不存在的值(基數索引爲0)。通過students

ArrayList<Student1> students = new ArrayList<>(); 

public ArrayList<Student1> searchByKey(String key, int keyInt) { 
    ArrayList<Student1> returnStudent = new ArrayList<>(); 
    Student1 student = new Student1(key); 
    students.forEach(element -> { 
     if (element.getName().equals(key) && element.getHUN() == keyInt) { 
      returnStudent.add(element); 
     } 
    }); 
    return returnStudent; 
} 
+0

這會添加特定的學生,我正在尋找returnStudent?我補充'我'的原因是因爲學生'我'是一個即時通訊尋找 –

0

你環路 -


的另一種方式做你想要達到的使用Java8作爲。但添加student(i)。最後注意s。將添加更改爲students(i)

0

假設students是帶有預填充數據的ArrayList,您可以執行以下操作。

public ArrayList<Student1> searchByKey(String key, int keyInt) { 
    ArrayList<Student1> returnStudent = new ArrayList<Student1>(); 

    for(Student1 student1 : students) { 
     if(student1.getName().equals(key) && student1.getHUN() == keyInt) { 
      returnStudent.add(student1); 
     } 
    } 

    return returnStudent; 
} 

我已經改變了while循環foreach循環,使它看起來更簡單和容易理解的。