我正在尝试调试此项目,并且在测试期间,在Test类中,虽然已经满足checkModuleSelection()方法返回True的条件,但这不会发生。我希望驱动程序类使用提供的测试数据运行checkModuleSelection()方法并返回true。
测试类
public class Test {
public static void main (String [] args)
{
Module csc8001 = new Module("CSC8001", "Programming and data structures", 15, 0, 0, 6);//1: 60, 2: 60
Module csc8002 = new Module("CSC8002", "Test Module", 0, 15, 0, 7);
Module csc8003 = new Module("CSC8001", "Programming and data structures", 0, 0, 0, 7);
Module csc8004 = new Module("CSC8002", "Test Module", 15, 0, 0, 7);
Module csc8005 = new Module("CSC8001", "Programming and data structures", 0, 15, 0, 7);
Module csc8006 = new Module("CSC8002", "Test Module", 0, 0, 0, 7);
Module csc8007 = new Module("CSC8001", "Programming and data structures", 15, 0, 0, 7);
Module csc8008 = new Module("CSC8002", "Test Module", 0, 15, 0, 7);
Module csc8009 = new Module("CSC8001", "Programming and data structures", 0, 0, 0, 7);
Module csc8010 = new Module("CSC8002", "Test Module", 15, 0, 0, 7);//lvl 7 150
Module csc8011 = new Module("CSC8001", "Programming and data structures", 0, 15, 0, 7);
Module csc8012 = new Module("CSC8002", "Test Module", 0, 0, 60, 7);
Module csc8013 = new Module("CSC8001", "Programming and data structures", 0, 0, 0, 7);
Student chris = new Student("Chris", "1");
System.out.println(chris.getName());
chris.addModule(csc8001);
chris.addModule(csc8002);
chris.addModule(csc8003);
chris.addModule(csc8004);
chris.addModule(csc8005);
chris.addModule(csc8006);
chris.addModule(csc8007);
chris.addModule(csc8008);
chris.addModule(csc8009);
chris.addModule(csc8010);
chris.addModule(csc8011);
chris.addModule(csc8012);
chris.addModule(csc8013);
System.out.println(chris.checkModuleSelection());
}
}
学生班
public boolean checkModuleSelection() {
int sumLevel6Credits = 0;
int sumLevel7Credits = 0;
int sumOtherCredits = 0;
int sem1Credits = 0;
int sem2Credits = 0;
int sem3Credits = 0;
boolean projectModule = false;
for (int i = 0; i < MAX_NUMBER_OF_MODULES; i++) {
System.out.println("The value of sem1Credits is: " + sem1Credits);
if (moduleRecords[i] != null) {
if (moduleRecords[i].getModule().getLevel() == Module.MSC_MODULE_LEVEL) {
sumLevel7Credits += moduleRecords[i].getModule()
.getSemesterOneCredits();
System.out.println();
} else if (moduleRecords[i].getModule().getLevel() == Module.STAGE_3_MODULE_LEVEL) {
sumLevel6Credits += moduleRecords[i].getModule()
.getTotalCredits();
}
projectModule = moduleRecords[i].getModule().getTotalCredits() >= MINIMUM_PROJECT_CREDITS;
sem1Credits += moduleRecords[i].getModule()
.getSemesterOneCredits();
sem2Credits += moduleRecords[i].getModule()
.getSemesterTwoCredits();
sem3Credits += moduleRecords[i].getModule()
.getSemesterThreeCredits();
}
}
// check that there is at least one project module, there isn't too many
// level 6 credits, there is enough total credits and enough credits in
// each semester
return !((sumOtherCredits > 0)
|| !projectModule
|| (sumLevel6Credits < MAXIMUM_LEVEL_6_CREDITS)
|| (sumLevel6Credits + sumLevel7Credits != VALID_NUMBER_OF_REGISTERED_CREDITS)
|| sem1Credits < 50 || sem1Credits > 70 || sem2Credits < 50
|| sem2Credits > 70 || sem3Credits < 50 || sem3Credits > 70);
}
修改 根据要求,Module类位于
之下package Project1;
//This class represents a module
public class Module {
public final static int MSC_MODULE_PASS_MARK = 50;
public final static int UG_MODULE_PASS_MARK = 40;
public final static int MSC_MODULE_LEVEL = 7;
public final static int STAGE_3_MODULE_LEVEL = 6;
private String moduleCode;
private String moduleTitle;
private int sem1Credits;
private int sem2Credits;
private int sem3Credits;
private int moduleLevel;
public Module(String code, String title, int sem1, int sem2, int sem3, int level)
{
moduleCode = code;
moduleTitle = title;
sem1Credits = sem1;
sem2Credits = sem2;
sem3Credits = sem3;
moduleLevel = level;
}
//method to return the module code
public String getCode()
{
return moduleCode;
}
//method to return the module title
public String getTitle()
{
return moduleTitle;
}
//method to return the Semester 1 credits
public int getSemesterOneCredits()
{
return sem1Credits;
}
//method to return the Semester 2 credits
public int getSemesterTwoCredits()
{
return sem2Credits;
}
//method to return the Semester 3 credits
public int getSemesterThreeCredits()
{
return sem3Credits;
}
//method to return the total credits across all the semesters
public int getTotalCredits()
{
// return sem2Credits + sem3Credits;
return sem1Credits + sem2Credits + sem3Credits;
}
//method to return the module level
public int getLevel()
{
return moduleLevel;
}
}
答案 0 :(得分:2)
使用.equals()
方法进行比较,不要使用==
来比较对象。
==
将检查两个引用是否在内存中引用相同的对象,而用于比较两个对象的.equals()意味着相等。
if (moduleRecords[i].getModule().getLevel().equals(Module.MSC_MODULE_LEVEL)) {}