用for循环替换if else?

时间:2015-12-12 00:08:27

标签: c++ loops if-statement for-loop replace

我有:

    if (a[i] == 1) {
        howMany[1] += 1;
    }
    else if (a[i] == 2) {
        howMany[2] += 1;
    }
    else if (a[i] == 3) {
        howMany[3] += 1;
    }
    else if (a[i] == 4) {
        howMany[4] += 1;
    }
    else if (a[i] == 5) {
        howMany[5] += 1;
    }
    else if (a[i] == 6) {
        howMany[6] += 1;
    }
    else if (a[i] == 7) {
        howMany[7] += 1;
    }
    else if (a[i] == 8) {
        howMany[8] += 1;
    }
    else if (a[i] == 9) {
        howMany[9] += 1;
    }

我想用以下内容替换它:

    if (a[i] == 1 || a[i] == 2 <-- etc) {
        howMany[i] += 1;
    }

但这并不奏效。有人有线索吗? 这是C ++,但我在Python中经历过同样的问题, 所以我不认为这是一个语言问题而是公正 一般问题。

4 个答案:

答案 0 :(得分:3)

如果你确定a的范围是1到9,你可以简单地写

howMany[a[i]]++;

否则您将需要一个if声明

if(a[i] >= 1 && a[i] <= 9)
    howMany[a[i]]++;

答案 1 :(得分:2)

怎么样

howMany[a[i]] += 1;

因为您始终根据howMany

的值访问a[i]元素

答案 2 :(得分:1)

您需要使用:

howMany[a[i]] += 1;

(或++而不是+= 1if语句(顺便说一下,不是循环),因为a[i]是持有1,2等的变量

您的新if语句也可简化为:

if ((a[i] >= 1) && (a[i] <= 9)) ...

答案 3 :(得分:1)

让我们看看你在做什么

if (a[i] == 1) {
    howMany[1] += 1;
}

因此,如果a[i]为1,那么您希望增加howMany[1]的值。由于a[i] == 1和索引howMany == 1,您只需要howMany[a[i]] += 1;