1

我要数A队和B队3连胜的次数。似乎总是进入最后的ifs。不是当 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

在最终 ifs 之前记录 consecutivasA 和 B 的值...我强烈怀疑由于早期的逻辑错误,您的值始终为零。

于 2012-12-26T15:40:25.630 回答
1

我会以另一种方式去做——而不是使用你提供的逻辑,我认为它只是检查 A 队或 B 队的胜利总数是否可以被 3 整除(这不一定说明胜利是否是连续的),我会尝试以下方法:

遍历您的数组并编写一个 if 语句来检查 A 队是否在特定位置获胜。如果是,请检查它是否也在 n+1 和 n+2 中获胜。如果是,则增加 plusA。

再次遍历您的数组并编写一个 if 语句检查 B 队是否在特定位置获胜。如果是,请检查它是否也在 n+1 和 n+2 中获胜。如果是,则增加 plusB。

注意:只检查数组中最后一个条目之前的两个条目,因为超出此范围会返回数组大小错误。

于 2012-12-26T15:41:13.883 回答
1

当 consecutivas 为 0 时,您执行此操作的方式也会增加,因为 0 % 3 也是 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 回答