对于循环援助

时间:2012-04-08 02:31:45

标签: java for-loop

所以我的for循环导致崩溃,我确切知道为什么,但我不确定是否有办法重写它以使其完成我想要完成的任务。

我试图让它每天从复利中取出资金并将其累计为一个月(设定为30天)。用户输入他们试图计算的天数。因此导致崩溃的原因是它们除了可被30整除的东西之外还有什么东西。

我很难想出一种方法来重写这个并且可以使用任何建议。我希望它做一些事情,如果他们输入65它计算2个月的价值,然后显示像第3个月的不足日。任何帮助总是非常感谢。提前谢谢。

for (int i = 0; i < numDays; i+=30){
    double cash=0;
    for (int n=1; n < 30; n++){
        int currentDay;
        currentDay= n+i;
        cash=cash+dailyMoney[currentDay];
    }
    month++;
    if(monthlyChecks == null)
        monthlyChecks = "\nCheck on month "+month+": $"+df.format(cash)+"\n";
    else 
        monthlyChecks = monthlyChecks+"\nCheck on month "+month+": $"+df.format(cash)+"\n";
}

numDays是用户输入的天数.... monthlyChecks是一个字符串.... dailyMoney []是保存每天金额的数组。

2 个答案:

答案 0 :(得分:1)

好吧,听起来像你在试图用你的“第3个月的不足日期”做的是这样的:(假设numDays是一个int)

numMonths = numDays / 30 //If numDays is an int, this will round down.
extraDays = numDays % 30

for (int i = 0; i < numMonths; i+=30){
   double cash=0;
   for (int n=1; n < 30; n++){
      int currentDay;
      currentDay= n+i;

      cash=cash+dailyMoney[currentDay];
   }
   month++;
   if(monthlyChecks == null)
      monthlyChecks = "\nCheck on month "+month+": $"+df.format(cash)+"\n";
   else 
      monthlyChecks = monthlyChecks+"\nCheck on month "+month+": $"+df.format(cash)+"\n";
   }
}

//Then at some point
Systme.out.println("Insuffiecent days for " + numMonth + 1 " months. " + 30 - extraDays " days short).")

答案 1 :(得分:1)

鉴于用户需要输入日期,可能是

int numMonths = numDays / 30;
int remainder = numDays % 30;

System.out.println ("Calculating for " + numMonths + " months");

if ( remainder != 0 ) {
    numDays -= remainder;
    System.err.println ("Insufficient days for month " + (numMonths + 1));
}

这应该全部放在代码的其余部分之前,包括(尤其)在dailyMoney = new double[numDays]部分之前。