2017-04-13 80 views
0

我是新来的Java语言代码后崩溃(刚开始大约2个星期前)使用格式化

基本上,用户输入他们的年/月/日,他们以出生,我用这个信息进行数学计算,以显示他们的年龄。

我需要0-9的数字作为01,02,03 ...因此,我搜索了四周,发现我可以使用Decimal.Format,然后打印出格式。

我的代码崩溃,每当它到达println(twodigits.format)部分没有mater我放它的地方。没有显示我需要解决的错误。

它为什么这样做,是否有更好的方法来做到这一点?我需要它始终是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

我猜'CurrentDate'和'BirthDate'是'String's? 'DecimalFormat.format()'需要一个数字值。 – shmosel

+0

如果您正在从用户/键盘进行输入,则可以从扫描仪对象开始。 – Sedrick

+0

“你需要它是两位数的计算不起作用,”我很困惑? – Sedrick

回答

0

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

如果我猜测,我会说他们是'String'类型,'twodigits.format()'不能处理字符串,这就是为什么它会崩溃。

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));