返回第一个可用日期的Java方法
我对即将提交的一个项目有问题(这是为了考试) 这是一个由多种方法组成的程序,但我需要一些帮助: 我需要生成今天的日期-我被迫使用日期和日历,即使日期不推荐使用,这也是这次考试的必修课-然后检查我的向量中是否已经存在该日期的预订 如果今天已经存在预订,则该方法必须告诉我第一个可用日期 i、 e:今天是2019年4月12日,我没有今天的预订,节目告诉我2019年4月12日是第一个可用的日期 如果没有,它将检查明天是否有预订。如果2019年4月13日不在我的矢量中,它将返回我2019年4月13日是第一个可用日期 该程序包括添加和删除预订 有了这段代码,一切都正常(我也尝试添加了do while和嵌套for循环,但没有任何变化),但并不总是这样:在第一次编译时,我有一个dateAvailable的空白字段 你能帮我吗返回第一个可用日期的Java方法,java,date,search,Java,Date,Search,我对即将提交的一个项目有问题(这是为了考试) 这是一个由多种方法组成的程序,但我需要一些帮助: 我需要生成今天的日期-我被迫使用日期和日历,即使日期不推荐使用,这也是这次考试的必修课-然后检查我的向量中是否已经存在该日期的预订 如果今天已经存在预订,则该方法必须告诉我第一个可用日期 i、 e:今天是2019年4月12日,我没有今天的预订,节目告诉我2019年4月12日是第一个可用的日期 如果没有,它将检查明天是否有预订。如果2019年4月13日不在我的矢量中,它将返回我2019年4月13日是第一
private void firstAVdate() {
Date data = new Date();
String dataStr;
boolean tuttoOK;
SimpleDateFormat formatter = new SimpleDateFormat ("dd/MM/yyyy");
dataStr=formatter.format(data);
String dateAvailable=dataStr;
System.out.println("Current date : ");
System.out.println(dataStr);
Calendar c = Calendar.getInstance();
if (vect.size()>0) {
for (int i=0; i<vect.size(); i++) {
if (vect.get(i).getDataString().equals(dataStr)) {
c.add(Calendar.DAY_OF_MONTH, 1);
dataStr = formatter.format(c.getTime());
dateAvailable=dataStr;
}
}
System.out.println("");
System.out.println("First available date:");
System.out.println(dateAvailable);
}else {
System.out.println("No bookings available.");
}
}
private void firstAVdate(){
日期数据=新日期();
字符串数据传输;
布尔图塔克;
SimpleDataFormat格式化程序=新的SimpleDataFormat(“dd/MM/yyyy”);
dataStr=formatter.format(数据);
字符串dateAvailable=dataStr;
System.out.println(“当前日期:”);
System.out.println(dataStr);
Calendar c=Calendar.getInstance();
如果(向量大小()>0){
对于(int i=0;i我假设您的意思是向量包含所有预定日期。
(你的代码正好相反)
所以我会使用一个哈希表结构来记录预定的日期
把它想象成一个日期池;如果你想预订一个日期,你首先要检查他是否在哈希表中,如果不在,你就把它“扔”进去
因此,这是一个抽象代码(仅在逻辑上编写,不可复制!):
你需要一个双循环。对于你想要检查的每个日期,你需要对照向量中的每个条目检查它,直到有一个匹配为止
如果您编写一个辅助方法isDateBooked
来确定向量是否已经包含给定日期的预订,则可能会更容易管理。此方法将包含一个循环,该循环在向量的元素上迭代,直到日期匹配。然后您从iter的循环中调用isDateBooked
超过日期的ates,直到isDateBooked
返回false
java.time
我知道你是不被允许的,但是对于其他阅读的人来说:不要使用SimpleDateFormat
、Date
和Calendar
。这些类设计得很糟糕,而且已经过时很久了。使用LocalDate
from。还有BookingSystem.getDataString()
不应该返回字符串,而应该返回一个LocalDate
(当然应该相应地命名)。以这种方式使用java.time会使您的工作更容易,并给出更清晰的代码。这是哪个vect
。要测试两个日期对象的相等性,请使用date1.compareTo(date2)==0
其中date1
和date2
是日期对象。vect
是一个向量:private vector vect=new vector()
请发布预订系统
代码。如果可以的话,我会的,这是为了考试,我想我的教授也在我们当中。我能以任何方式将它发送到pm中吗?顺便说一句,我的程序的其他部分没有任何问题。涉及向量的操作非常有效。这个方法对整个程序有单独的作用(在开关盒内调用,带有一个输入字母)my vector动态填充预订,其内容可以保存在文件(dat或txt)中。代码中的第一个if仅用于检查向量是否为空。我本来会使用哈希表,但很遗憾,我不允许使用。好的。我再次检查了您的代码,但仍然不清楚您要做什么,但我建议您在内部if语句的末尾添加一个break语句。为什么打印“No bookings available”(无预订可用)如果向量是空的?不是相反吗?因为如果我的向量是空的(里面没有数据),我必须打印“没有可用的预订”。忽略这一点。
initially:
HashTable ht = new HashTable;
book_a_date(String date):
if(!ht.contains(date)) {
ht.add(date);
return date + " successfully booked!";
}
else {
date = next day;
return book_a_date(date);
}
unbook_a_date(String date):
if(ht.contains(date) {
ht.remove(date);
}