1

チームAとBの3連勝数を数えたいと思います。常に決勝戦に入っているようです。consecutivasが3,6,9に等しいときではありません...

  var consecutivasA = 0;
  var consecutivasB = 0;
  var plusA = 0;
  var plusB = 0;

  for (var i = 2; i <= 30; i++) {
    var row = values[i];

      if (row[3] > row[4]) { 
        consecutivasA++;
        consecutivasB = 0;
      }
      else if (row[3] < row[4]) {
        consecutivasB++;
        consecutivasA = 0;
      }
      else {
        consecutivasA = 0;
        consecutivasB = 0;
      }

      if (consecutivasB % 3 == 0) { plusB++; } 
      if (consecutivasA % 3 == 0) { plusA++; }
4

3 に答える 3

1

0 % 3 も 0 であるため、consecutivas が 0 の場合もインクリメントします。この例では、サンプル データの結果をログに書き込みます。

function consecutivasMod () {
  var consecutivasA = 0;
  var consecutivasB = 0;
  var plusA = 0;
  var plusB = 0;
  values=[
    [0,0,0,1,0],    [0,0,0,1,0],    [0,0,0,1,0],    [0,0,0,0,1],    [0,0,0,0,1],
    [0,0,0,0,1],    [0,0,0,0,0],    [0,0,0,0,0],    [0,0,0,0,0],    [0,0,0,0,2],
    [0,0,0,0,3],    [0,0,0,0,4],    [0,0,0,0,5],    [0,0,0,0,6],    [0,0,0,0,7],
     ]
  for (var i = 0; i < 15; i++) {
    var row = values[i];

     if (row[3] > row[4]) { 
       consecutivasA++;
       consecutivasB = 0;
     }
     else if (row[3] < row[4]) {
       consecutivasB++;
       consecutivasA = 0;
     }
     else {
       consecutivasA = 0;
       consecutivasB = 0;
     }

     if (consecutivasB>0&&(consecutivasB % 3) == 0) { plusB++; } 
     if (consecutivasA>0&&(consecutivasA % 3) == 0) { plusA++; }
  }
 Logger.log ("consecutivasA "+plusA);
 Logger.log ("consecutivasB "+plusB);
}
于 2012-12-26T15:49:09.420 に答える
1

consecutivasA と B の値を最後の ifs の直前に記録してください...以前の論理エラーのために、値が常にゼロになっていると強く思います。

于 2012-12-26T15:40:25.630 に答える
1

あなたが提供するロジックを使用する代わりに、これを別の方法で行うことにします.チームAまたはチームBによる勝利の合計数が3で割り切れるかどうかをチェックするだけだと思います(これは、勝利するかどうかについて必ずしも何も言いません連続しています)、私は次のことを試します:

配列を実行し、チーム A が特定の場所で勝ったかどうかを確認する if ステートメントを記述します。はいの場合は、n+1 と n+2 でも勝ったかどうかを確認します。そうであれば、plusA をインクリメントします。

配列をもう一度実行し、チーム B が特定の場所で勝ったかどうかを確認する if ステートメントを記述します。はいの場合は、n+1 と n+2 でも勝ったかどうかを確認します。そうであれば、plusB をインクリメントします。

注:配列の最後のエントリの 2 つ前のエントリまでのみチェックしてください。それを超えると配列サイズ エラーが返されます。

于 2012-12-26T15:41:13.883 に答える