我有一个交付项目,包括以下类名:
食客
位置
路线
商店
车辆
仓库
启动器(包括主方法)
接下来需要做的是:我已经为fooditem类初始化了一个名为“oatmine”的对象。
此fooditem有4个属性,如下所示:
import java.time.LocalDate;
public class FoodItem {
public String label;
private double volume;
private double weight;
private LocalDate expirationDate;
这些属性的值在launcher中设置如下:
FoodItem oatmeal = new FoodItem("Serving size is 1/2 Cup 40gr");
oatmeal.setVolume(25);
oatmeal.setWeight(0.500);
oatmeal.setExpirationDate(LocalDate.of(2025,2,5));
现在我需要做的是计算日期,检查产品的过期日期是否仍然有效,逻辑为(过期日期-今天的日期+3天),为此我创建了一个名为stillvalid的方法,如下所示:
import java.time.Period;
import java.util.Arrays;
import java.time.LocalDate;
private boolean stillValid(FoodItem foodItem){
LocalDate date = LocalDate.now();
LocalDate dayLeft = date.plus(Period.ofDays(3));
if(foodItem.getExpirationDate() != dayLeft) {
return true;
}
return false;
}
现在我需要在additem方法中使用这个方法,以便检查项目的过期日期是否过期,我可以添加到存储区。
public void addItem(FoodItem foodItem) {
int stop = 0;
for (int i = 0; i < foodItemsArray.length; i++) {
if (foodItemsArray[i] != null) {
stop = 1;
break;
}
}
if (stop == 0) {
for (int i = 0; i < foodItemsArray.length; i++) {
if (foodItemsArray[i] != foodItem) {
foodItemsArray[i] = foodItem;
break;
}
}
}
}
在这一部分中,我无法在头脑中创建逻辑,使我的stillvalid函数在additem body中,或者即使我正确地执行了stillvalid方法。
1条答案
按热度按时间t40tm48m1#
热释光;博士
细读
LocalDate
javadoc可以发现方便的方法,例如isAfter
以及plusDays
.详细信息
添加
stillValid
或者expired
你的方法FoodItem
类,如果这是一个合理的地方知道的规则,增加三天的到期日。用于比较
LocalDate
,使用isAfter
以及isBefore
.或者,更简单地说:
用法:
注意:请注意,对于任何给定的时刻,日期在全球各地因时区而异。现在是日本东京的“明天”,而加拿大多伦多的“昨天”。通过省略
ZoneId
调用时的参数LocalDate.now
,您的结果将因部署jvm的当前默认时区而异。如评论中所建议的,考虑使用LocalDate#now( ZoneId zone )
例如LocalDate.now( ZoneId.of( "America/New_York" ) )
.完整示例类
下面是一个使用Java16中新的记录特性的示例类。
用法。
当你跑的时候。