我正在开展一个项目,我必须对其进行测试,以确保某些代码能够满足用户的期望。我应该做的唯一部分是编写GetCourseByCourseID的代码。其他一切都给了我。我编写了代码并运行程序。该程序运行,但它不显示任何内容。我需要做什么?
public class Course {
public Course(String id, String title, int creditHours, String description, String prerequisiteCourse)
{
this.CourseID = id;
this.CourseTitle = title;
this.CreditHours = creditHours;
this.Description = description;
this.PrerequisiteCourse = prerequisiteCourse;
}
public String CourseID;
public String CourseTitle;
public int CreditHours;
public String Description;
public String PrerequisiteCourse;
}
public class CourseList {
public Course[] CourseArray =
{
new Course ("CIS 400", "OO Analysis & Design", 4, "Important class", "CIS 110") ,
new Course ("CIS 150A" , "VB.NET Programming", 4, "Good Introduction to programming", "CIS 100") ,
new Course ("CIS 150B", "C# Programming with labs", 4, "Follow-up to CIS 100", "CIS 100")
};
public Course GetCourseByCourseID(String id)
{
for (Course course : CourseArray)
if (course.CourseID == id)
return course;
return null;
}
}
public class CourseListTest {
public static void main(String[] args)
{
GetCourseByCourseIDTestWhenCourseExists();
GetCourseByCourseIDTestWhenCourseDoesNotExist();
}
public static void GetCourseByCourseIDTestWhenCourseExists()
{
CourseList myCourseList = new CourseList();
Course myCourse = myCourseList.GetCourseByCourseID("CIS 400");
if (myCourse.CourseID != "CIS 400")
System.out.println("ERROR - GetCourseByCourseIDTestWhenCourseExists(): Returned CourseID Not equal (CIS 400)");
}
public static void GetCourseByCourseIDTestWhenCourseDoesNotExist()
{
CourseList myCourseList = new CourseList();
Course myCourse = myCourseList.GetCourseByCourseID("CIS 101");
if (myCourse != null)
System.out.println("ERROR - GetCourseByCourseIDTestWhenCourseDoesNotExist(): should have returned null");
}
}
这是一堂课。我问我的教授为什么没有出现,他说他不熟悉java,我应该使用visual basic。我个人讨厌视觉基础(在以前的课程中使用它的糟糕体验),我很想知道它在java中是如何工作的!我到处看了2个小时,没找到任何东西!请帮忙!
答案 0 :(得分:0)
您的一个问题是行if (course.CourseID == id)
,它没有正确比较字符串。您需要使用equals
而不是==
进行字符串比较,因为==
只检查两个字符串是否是内存中的实际相同对象。
if (course.CourseID.equals(id))
这在How do I compare strings in Java?
深入解释您在if (myCourse.CourseID != "CIS 400")
尝试修复这些内容,如果您的程序仍无效,请发表评论。
答案 1 :(得分:0)
course.CourseID == id
myCourse.CourseID != "CIS 400"
将这两行更改为:
course.CourseID.equals(id)
!myCourse.CourseID.equals("CIS 400")
看看你能不能得到你想要的东西。
基本上,您希望使用String#equals来检查字符串相等性,而不是使用==
。
答案 2 :(得分:-1)
public Course GetCourseByCourseID(String id){
for (Course course : CourseArray){
if (course.CourseID.equals(id)){
return course;
}
}
return null;
}
你正在做的是在第一个课程上返回null然后你可以循环其他课程。