使用格式化后代码崩溃

时间:2017-04-13 21:18:07

标签: java number-formatting

我是Java语言的新手(刚开始大约2周前)

基本上,用户按顺序输入他们出生的年/月/日,并使用此信息进行数学计算,以显示他们的年龄。

我需要将0-9中的数字作为01,02,03 ......所以,我搜索了一下,发现我可以使用Decimal.Format,然后打印出格式。

我的代码崩溃,只要它到达println(twodigits.format)部分,无论我把它放在哪里。没有显示我需要解决的错误。

为什么这样做并且有更好的方法吗?我需要它始终是2位数,否则计算将不起作用。

这是我的代码的一部分,如果需要我可以提供更多。

DecimalFormat twodigits = new DecimalFormat("00");
System.out.println("Calculating...");

Integer CurrentDate2 = Integer.valueOf(CurrentDate);
Integer BirthDate2 = Integer.valueOf(BirthDate);

int a = CurrentDate2.intValue();
int b = BirthDate2.intValue();
int age = (a - b) / 1000;
Thread.sleep(300);
System.out.println(".");
Thread.sleep(300);
System.out.println(".");
Thread.sleep(300);
System.out.println(".");
System.out.println(twodigits.format(CurrentDate));
System.out.println(twodigits.format(BirthDate));

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

什么类型" CurrentDate"和" BirthDate"因为你的代码不清楚?您首先使用它们来设置" CurrentDate2"和" BirthDate2"。然后在println()中使用它们。

如果我猜测,我会说他们属于' String'和' twodigits.format()'无法处理字符串,这就是它崩溃的原因。

答案 1 :(得分:0)

这需要两个日期并在“/”上分割时间。然后它以您想要的格式打印出来。

    DecimalFormat twodigits = new DecimalFormat("00");
    System.out.println("Calculating...");

    String CurrentDate = "01/02/2007";
    String BirthDate = "02/03/2007";

    String[] currentDateParts = CurrentDate.split("/");
    String[] birthDateParts = BirthDate.split("/");

    int cdp0 = Integer.parseInt(currentDateParts[0]);
    int cdp1 = Integer.parseInt(currentDateParts[1]);
    int cdp2 = Integer.parseInt(currentDateParts[2]);


    int bdp0 = Integer.parseInt(birthDateParts[0]);
    int bdp1 = Integer.parseInt(birthDateParts[1]);
    int bdp2 = Integer.parseInt(birthDateParts[2]);

    //do your calculations

    System.out.println(twodigits.format(cdp0));
    System.out.println(twodigits.format(cdp1));
    System.out.println(twodigits.format(cdp2));
    System.out.println(twodigits.format(bdp0));
    System.out.println(twodigits.format(bdp1));
    System.out.println(twodigits.format(bdp2));