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が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).")
于 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 に答える