2015-07-09 28 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

相关问题