2

从下面创建一个硬币翻转数组的程序开始,我必须添加一个函数来打印正面的总数和翻转的反面总数。该函数必须将翻转数组作为参数。

这是给定的程序:

var NUM_FLIPS = 100;

function start(){
    var flips = flipCoins();
    printArray(flips);
    countHeadsAndTails();
}

// This function should flip a coin NUM_FLIPS
// times, and add the result to an array. We
// return the result to the caller.
function flipCoins(){
    var flips = [];
    for(var i = 0; i < NUM_FLIPS; i++){
        if(Randomizer.nextBoolean()){
            flips.push("Heads");
        }else{
            flips.push("Tails");
        }
    }
    return flips;
}

function printArray(arr){
    for(var i = 0; i < arr.length; i++){
        println(i + ": " + arr[i]);
    }
}

我需要编写这个函数:

function countHeadsAndTails(flips) {
    //Write the program here
}

这是我到目前为止所拥有的,但该功能无法按预期工作。我被困在if声明中的内容上。

function countHeadsAndTails(flips) {        
    var headCount = 0;
    var tailCount = 0;
    for (var i = 0; i < NUM_FLIPS; i++) {
        if (i == "Heads") {
            headCount += 1;
        }else {
            tailCount += 1;
        }
    }

    println("Total Heads: " + headCount);
    println("Total Tails: " + tailCount);
}

该程序随机翻转正面或反面 100 次并打印出结果,但计数器不起作用,我得到了这个:

Total Heads: 100
Total Tails: 0
4

1 回答 1

1

if (i == "Heads") {不起作用的原因是因为i是当前索引(一个数字),而您正在将其与 string 进行比较"Heads"。我怀疑你想要的是if (flips[i] == "Heads") {. 基本上使用索引i来获取i数组中的第 th 元素并将其与"Heads".

此外,该参数flipscountHeadsAndTails()start()函数中传递。看起来这可能是提供的问题本身的问题。我假设countHeadsAndTails他们提供的存根函数已经有flips参数?

于 2017-11-18T00:56:37.707 回答