2015-07-09 69 views
1

我有一門課需要在測試類中傳遞JUnit大小寫,因此方法名稱getNumberStudents需要保持不變。將變量從一個類傳遞到另一個類,而不更改方法名

public class Course { 

private Students students = null; 

public Course(Students students, Grades grades) { 
    this.students = students; 
} 
public int getNumberStudents() { 
    int numberStudents = 0;  
    numberstudents = students.getNumberStudents();  
    return numberStudents; 
} 

但是,我需要使用另一個類「學生」訪問數據。由於如何設置測試類,我無法修改此類中的方法簽名。有人可以告訴我如何將我在學生課程中打印出來的結果傳遞給課程課程嗎?

public class Students { 

public Students(String studentsDb) { 
    try { 
     FileInputStream file = new FileInputStream(new File(studentsDb)); 

     XSSFWorkbook workbook = new XSSFWorkbook(file); 

     int numberStudents = 0; 

     // Get first sheet from the workbook 
     XSSFSheet sheet = workbook.getSheetAt(0); 

     // Iterate through each rows from first sheet 
     Iterator<Row> rowIterator = sheet.iterator(); 
     while (rowIterator.hasNext()) { 
      Row row = rowIterator.next(); 
      if (row.getRowNum() == 0) { 
       continue; 
      } 
      numberStudents = numberStudents + 1; 
     } 
     System.out.println(numberStudents); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

或者,有沒有更簡單的方法來做到這一點? 謝謝。

+2

你好嗎'students.getNumberStudents();''時爲students'類型的'學生'但你的'學生'類沒有'getNumberStudents()'方法? 還是有更多的課? – Marcin

+0

這是我遇到的絆腳石。 Eclipse告訴我在Students類中創建了一個'getNumberStudents()'方法,但是由於它是如何訪問數據庫的,我不能重命名public students(String studentsDb)。有沒有解決的辦法? – yodish

+0

爲什麼你不能在學生類中添加一個實例變量'numstudents'並且讓你的構造函數集等於它從數據庫中獲得的數字? – Marcin

回答

2

你可以這樣做:

public Class Students { 
    private int numStudents; 

    public Students(String studentsDb) { 
     //Keep everything the same 

     //add this line under the print statement: 
     this.numStudents = numberStudents; 
    } 

    public int getNumberStudents() { 
     return numStudents; 
    } 
} 

然後在您的Course類,你現在可以做students.getNumberStudents();

+0

這樣做的技巧,謝謝!我花了太多時間試圖將變量正確傳遞給第二種方法;然後又轉到另一個班級。謝謝你們... – yodish

+0

@yodish沒問題!我只是有一個問題。如果你的'Students'類除了我提供的構造函數和方法之外沒有別的方法,爲什麼不讓學生的構造函數成爲'Course'的一個方法,然後讓'private int numStudents'成爲一個實例變量課程? – Marcin

+0

需要考慮的事情,但答案是:因爲我的編碼超出了我的追尾。你的建議可能是正確的方法。如果我有時間清理,我可以考慮一下。再次感謝... – yodish

相關問題