为了账号安全,请及时绑定邮箱和手机立即绑定

使用方法时日历给出错误的年份

使用方法时日历给出错误的年份

MYYA 2022-07-06 09:44:05
我必须找出从出生日期算起的年龄,放在测试班的桌子上。这意味着我必须将现在的日期与所选日期的日期相匹配。此外,我将该方法放在主类中。错误是我一直为插入的所有变量获得 2018。从我的代码(不是全部在这里)中,第一个变量应该是 58 而不是 2018。这是代码。public static int ageMeth(String dob) {        dob.split("/");        int years = 0;        String tempDate = "";        boolean month = true;        if (month) {            // gets the month converts            int x = Integer.parseInt(dob.valueOf(0));            int y = Integer.parseInt(dob.valueOf(1));            String xy = Integer.toString(x, y);            int xyNum = Integer.parseInt(xy);            LocalDateTime date = LocalDateTime.now();            tempDate = date.toString();            int p = Integer.parseInt(tempDate.valueOf(5));            int i = Integer.parseInt(tempDate.valueOf(6));            String pi = Integer.toString(p, i);            int piNum = Integer.parseInt(pi);            // the days            int x2 = Integer.parseInt(dob.valueOf(2));            int y2 = Integer.parseInt(dob.valueOf(3));            String xy2 = Integer.toString(x2, y2);            int xyNum2 = Integer.parseInt(xy2);            int p2 = Integer.parseInt(tempDate.valueOf(8));            int i2 = Integer.parseInt(tempDate.valueOf(9));            String pi2 = Integer.toString(p2, i2);            int piNum2 = Integer.parseInt(pi2);            // the year            int x3 = Integer.parseInt(dob.valueOf(4));            int y3 = Integer.parseInt(dob.valueOf(5));            int xx3 = Integer.parseInt(dob.valueOf(6));            int yy3 = Integer.parseInt(dob.valueOf(7));            String xy3 = Integer.toString(x3, y3);            String xxyy3 = Integer.toString(xx3, yy3);            int xyNum3 = Integer.parseInt(xy2);            int xxyyNum3 = Integer.parseInt(xxyy3);            int p3 = Integer.parseInt(tempDate.valueOf(8));            int i3 = Integer.parseInt(tempDate.valueOf(9));            String pi3 = Integer.toString(p3, i3);            int piNum3 = Integer.parseInt(pi3);
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

要根据dob传入的年龄查找年龄,您可以使用:


public static int ageMeth(String dob) {

    return Period.between(LocalDate.parse(dob, DateTimeFormatter.ofPattern("MM/dd/yyyy")), 

                          LocalDate.now()).getYears();

}


查看完整回答
反对 回复 2022-07-06
?
倚天杖

TA贡献1828条经验 获得超3个赞

看来你有几个错误的印象?

  • Integer.parseInt(someString.valueOf(someIndex))会给你int索引处的数字值someIndexsomeString?不是这样。在 IDE(或编译器)中打开警告。它会告诉你类似“String 类型的静态方法 valueOf(int) 应该以静态方式访问”。这意味着这valueOf不是所讨论的字符串的方法,而是String类的方法(这就是“静态”在这里的意思)。因此,您从中获得的结果与字符串无关。

  • Integer.toString(p, i)会给你一个形成连接的字符串pi?也不是这样。文档说:

    以第二个参数指定的基数返回第一个参数的字符串表示形式。

似乎它会帮助您了解String类中的方法是如何工作的。

此外,您正试图从月、日和年LocalDate差异中构建一个新的。相反,您应该仅从字符串中的月、日和年构建一个,然后找到该日期与今天之间经过的时间段(就像您已经在做的那样)。

您的问题的正确解决方案是 Nicholas K.


查看完整回答
反对 回复 2022-07-06
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信