0

所以我的 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[] 是保存每天金额的数组。

4

2 回答 2

1

好的,在我看来,你试图用“第 3 个月的天数不足”做的事情是这样的:(假设 numDays 是一个整数)

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).")
于 2012-04-08T02:56:24.047 回答
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]部分之前。

于 2012-04-08T02:58:06.310 回答