2015-12-31 46 views
2

我正在學習課程,想出了這種情況。這是我的代碼。從單個方法返回一個ArrayList和int值。可能嗎?

public static ArrayList<Student> checkPresent(String unitID, String week){ 
    int present = 0; 
    ArrayList<Student> studentDetails = Student.getStudentDetails(); 

    ArrayList<AttendanceLog> pickedList = AttendanceLog.pickFromAttendanceLog(unitID, week); 

    for(Student student : studentDetails){ 
     student.setPresent("N"); 
     for(AttendanceLog attendance : pickedList){ 
      if(student.getStudentNo().equals(attendance.getStudentID())){ 
       student.setPresent("Y"); 
       present++; 
      } 

     } 
    } 

    return studentDetails; 

} 

我只返回ArrayList但我也想要得到的整數值present。可能嗎?或者我該如何取得整數值?

+2

你可以在一個類中封裝arraylist和integer並返回它的對象 – Hemang

+1

[如何從Java方法返回多個對象?](http://stackoverflow.com/questions/457629/how-返回多個對象從一個Java方法) – ctomek

回答

1

創建類holyl的arraylist和整數。 classname name = new classname(); name.integerValue= integerValue; name.arraylist= arraylist; return arraylist;

3

是的,你可以創建一個同時擁有一個ArrayList類以及整數

class SomeClass{ 
ArrayList<Student> aList; 
int present; 
} 

,有你的方法返回此類

UPDATE的一個實例:

public static SomeClass checkPresent(String unitID, String week){ 

int present = 0; 
ArrayList<Student> studentDetails = Student.getStudentDetails(); 

ArrayList<AttendanceLog> pickedList = AttendanceLog.pickFromAttendanceLog(unitID, week); 

for(Student student : studentDetails){ 
    student.setPresent("N"); 
    for(AttendanceLog attendance : pickedList){ 
     if(student.getStudentNo().equals(attendance.getStudentID())){ 
      student.setPresent("Y"); 
      present++; 
     } 

    } 
} 
SomeClass someCls = new SomeClass(); 
someCls.present = present; 
someCls.aList = studentDetails; 
return someCls; 

} 

請注意,在您的示例中,您正在靜態獲取studentDetails,因此以這種方式對其進行編碼沒有多大意義,因爲您始終可以通過調用Student.g來獲取學生列表etStudentDetails()。

+0

你可以請進一步解釋一下示例代碼嗎? –

+0

我已經更新了我的答案。 –

+0

謝謝!這真的很有用 –

2

你只能從方法中返回一件東西。

你必須選擇:

  1. 通過的ArrayList作爲參數傳遞給方法。調用者將實例化ArrayList,並且該方法將填充它。然後,除ArrayList之外,您的方法可以返回您想返回的int

  2. 裹在一些自定義類ArrayListint和改變你的方法返回類的實例(你也可以做到這一點與Object[],但是這將是醜陋的)。

0

我喜歡創建一個具有ArrayList和int成員的新類型。

class Result { 
    public final int value; 
    public final List<> list; 

    public Result(int val, List<> list) { 
     this.value = val; 
     this.list = list; 
}