我正在编写一个有 3 个类的程序。该程序将读入一个列出您拥有的约会的文件并将它们读入 schedule[]。将它们读入日程表后,您需要对它们进行排序。您还必须能够添加其他约会并且还能够搜索约会。输入文件的第一行如下所示:
11/10/2013 14:00 讨论学生编程逻辑
其中 11/10/2013 是一个名为 date 的字符串,14:00 是一个名为 time 的字符串,剩下的句子是一个名为 text 的字符串。我已将这些全部作为字符串、字符串、字符串读入我的数组时间表
我的老师在 Appointment 类中创建了一个 compareTo 语句,它连接了日期和时间,因为搜索和排序需要对这两个组合进行,我们从来没有做过一个有两个变量的 compareTo。
这是 Appointment() 中的 compareTo,如下所示:
public int compareTo(Appointment other)
{
String one, two;
one = this.date + this.time;
two = other.date + other.time;
return one.compareTo(two);
} // end compareTo
在 Schedule 类中,我必须调用一个类“find”,要求用户输入日期和时间,然后调用我的日程表的二分搜索()来查看是否有匹配项,并且我有一个约会日期和time 然后返回 find(),输出没有 apt 或 appt 的详细信息。我以前做过这个,但是当我只搜索一件事时,比如日期......我的代码是为了搜索日期而编写的,因为我只是不知道如何让它使用 compareTo 并一起搜索两者(日期+时间)我不得不交出一些东西……现在我只想知道什么是正确的方法!!。我试过用“一”和“二”代替日期,各种不同的东西……但很沮丧。没有任何效果。有人可以告诉我这应该如何写在搜索中。我有两个问题:1。我只搜索日期而不是日期+时间。2. 在二进制搜索中的 compareTo 中,我收到错误消息“类型字符串中的方法 compareTo 字符串不适用于参数约会。”
这是调用我的二进制搜索方法的 find 方法:
private void find()
{
String inDate, inTime;
int position;
Appointment searchArg = new Appointment();
// get info from user
System.out.println ("Enter Date and Time separated by space: ");
inDate = console.next();
inTime = console.next();
position = binarySearch(schedule, numAppointments, searchArg);
//should that last thing be "searchArg"? or "date"? or what??
if (position == -1)
System.out.println(" appointment does not exist");
else
System.out.println("\nAppointment =");
outputOneAppointment(position+1);
}
private int binarySearch(Appointment[] list, int listLength, Appointment searchItem)
{
int first = 0;
int last = listLength - 1;
int mid = 0;
boolean found = false;
while (first <= last && !found)
{
mid = (first + last) / 2;
if (list[mid].date.equals(searchItem))
found = true; //I should not search date but rather the date and time together
else if (list[mid].date.compareTo(searchItem) > 0)
//I also get that error here saying what I wrote above in my question
last = mid - 1;
else
first = mid + 1;
}
if (!found)
mid = -1; //it is an unsuccessful search
return mid;
}//end binarySearch