gpt4 book ai didi

日期添加计算中的Java "Integer number too large"

转载 作者:行者123 更新时间:2023-12-01 06:51:06 26 4
gpt4 key购买 nike

我删除了与我的问题无关的代码,并留下了与我的问题相关的代码。它表明整数太大。我已将当前时间转换为毫秒,并尝试以毫秒为单位添加一个月、两周和 1 周以实现“过期日期”。如果有人知道我将如何使用 Long 而不是 int ?我很困惑,因为我的日期没有声明为整数?

它指出“dateExpired = dateExpired + 2628000000;”处的错误。

public class VIP implements Serializable {
private Date dateExpired;

public VIP(Date dateExpired) {
this.dateExpired = new Date(Calendar.getInstance().getTimeInMillis());
}


public Date getDateExpired() {
return dateExpired;
}

public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = dateExpired + 2628000000;
} else if (ticketType.equals("Silver")) {
dateExpired = dateExpired + 1209600000;
} else {
dateExpired = dateExpired + 604800000;
}
}
}

最佳答案

在数字后面添加标记 L,将其转换为 long 文字:

public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = dateExpired + 2628000000L;
} else if (ticketType.equals("Silver")) {
dateExpired = dateExpired + 1209600000L;
} else {
dateExpired = dateExpired + 604800000L;
}
}

如果没有它们 L,编译器会将它们解释为 int 文字,但这些值对于 int 类型来说太大了。您可以使用的最大 int 值是 2147483647(尽管在这种情况下最好不要混合类型,而只使用 long)。

您还会遇到添加错误类型的问题。将 dateExpired 更改为 long(稍后将其转换为 Date),或使用以下形式:

dateExpired = new Date(dateExpired.getTime() + 604800000L) 

顺便说一句,它可能会帮助您稍后记录大数字的含义:

dateExpired = dateExpired + 86400000L; // one day

关于日期添加计算中的Java "Integer number too large",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com