【问题标题】:How do I write a function that prints counts of values in an array, taking the array as a parameter?如何编写一个函数来打印数组中的值计数,并将数组作为参数?
【发布时间】:2017-11-18 00:51:49
【问题描述】:

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

这是给定的程序:

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

【问题讨论】:

  • i == "Heads" 显然不起作用,因为您已将 i 声明为数字 (for (var i = 0...))。 flips 是什么类型,在打印其内容的代码中如何访问它?
  • 也用headCount++代替headCount += 1
  • 您需要将数组传递给计数函数。应该是countHeadsAndTails(flips);

标签: javascript arrays parameters counting coin-flipping


【解决方案1】:

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

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

【讨论】:

  • 你为什么要做作业而不是让发帖者自己弄清楚?有点违背了任务的目的。我们没有足够的复制/粘贴程序员吗?我重做了他们做的足够多的工作。
  • 您说得有道理,但发帖人确实将其缩小到她坚持的 1 行代码。对我来说似乎很合理。您是否愿意我解释一下为什么它不起作用并保留它?
  • @KenWhite 这个网站的目的是向程序员展示他们哪里出了问题以及如何解决它。当他们不提供代码时,我们会抱怨,但这个提供了。这有什么问题?
  • @EmilyJ。听起来您没有将包含翻转的数组传递给计数函数。
  • @EmilyJ。我认为 Barmar 是正确的,尽管考虑到上下文,这似乎是他们提供给您的问题而不是您的错误的问题。
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
相关资源
最近更新 更多