计算“if”语句为真的次数

时间:2016-10-14 09:24:50

标签: java

我想计算某个if语句的真实频率:

for (int i=0;i<10001;i++){
    int min = 1;
    int max = 6;

    int dice1 = min + (int) (Math.random() * ((max - min) + 1));
    int dice2 = min + (int) (Math.random() * ((max - min) + 1));

    //System.out.println(dice1 + " and " + dice2);

    if (dice1==dice2) {
        System.out.println("yes");}
    }
}

有了这个,我希望输出是一个整数(和),例如,它表示dice1和dice2输出的数字相同的次数。 提前致谢

4 个答案:

答案 0 :(得分:3)

令人惊讶的是,要数数,你需要一个柜台;所以,让我提出一个反建议:

int counterOfTruth = 0;
for ...
  if (...) {
    ... 
    counterOfTruth++;
  }
}

print counterOfTruth;

并且,严肃地说:你会使用一个更有说服力的名字,比如“counterForIdenticalDiceThrows”。

答案 1 :(得分:3)

最小化代码污染的一种方法是定义计数器

int count = 0;

for循环之前

,然后写if (dice1 == dice2 && ++count > 0){

在这里,我正在利用&&的短暂性质:count仅在dice1 == dice2时进行评估(并递增)。请注意,++count > 0始终为true,因此不会更改条件。

它不像在C或C ++中那样出色:在那些语言中你不需要笨重的> 0,所以也许我的建议在Java中不像在C中那样惯用或者C ++。

答案 2 :(得分:1)

一个非常常见的技巧是在if语句中使用后增量运算符++(在调用时向变量添加一个):

   int count = 0;
   for(int i = 0; i < 10001; i++){
   // The rest of your code here!
      if (dice1 == dice2){
        System.out.println("yes");
        count++;
      }
   }
   System.out.println("The dice were equal " + count + " times.")

答案 3 :(得分:0)

  

您可以随时将公共代码移到循环之外,这称为循环不变代码,它在每次迭代中给出相同的值,如(max-min)+1。

此外,您可以将变量声明移到循环之外。

int min = 1;
int max = 6;
int dice1,dice2;
int counter = 0;
for(int i=0;i<10001;i++)
{
       dice1 = min + (int) (Math.random() * ((max - min) + 1));
       dice2 = min + (int) (Math.random() * ((max - min) + 1));



        if(dice1==dice2)
        {
           counter ++;
           System.out.println("yes");
        }
}
System.out.println(counter);