【问题标题】:Stuck in a not so infinite loop?陷入了一个不那么无限的循环?
【发布时间】:2018-01-03 12:36:16
【问题描述】:

我对 JavaScript 很陌生,所以请不要因为“无知”的问题攻击我。

在我当前的代码中,我陷入了一个似乎是无限循环(但不是完全无限)的状态,最终在通过我的所有提示 5 次后结束。

var authors = [];
                for(var authorName = 0; authorName < books.length; authorName++)
            {
                authors[0]=parseFloat(prompt("Who wrote War and Peace?"));
                authors[1]=parseFloat(prompt("Who wrote Huckleberry Finn?"));
                authors[2]=parseFloat(prompt("Who wrote The Return of the Native?"));
                authors[3]=parseFloat(prompt("Who wrote A Christmas Carol?"));
                authors[4]=parseFloat(prompt("Who wrote Exodus?"));

        }

我不确定我是否只是没有正确设置数组或 for 循环,或者我需要做什么才能让它通过并填充数组。

请记住,我是 JavaScript 的新手,所以最基本、初学者、简单的答案将是最好的。到目前为止,我只是想在基础知识上站稳脚跟。 (:

【问题讨论】:

  • 你有一个for 循环遍历你所有的“书”。对于每本书,您的循环会提出 5 个问题。
  • 另外,当您的问题似乎是在询问姓名而不是数字时,为什么在调用 prompt() 的结果中使用 parseFloat()
  • 您的...问题中没有包含问题。
  • 不能解决您的问题,但您的命名约定有些奇怪。你有一个变量authorName,它似乎是一个int。为什么将 int 称为 authorName
  • 哦,有道理。 @Pointy,我只是出于通常使用数字的习惯而这样做。我什至没有意识到我正在这样做。一个要求是我应该有包含书名的提示。这就是我对如何使它工作感到困惑的地方。 var books = [“战争与和平”、“哈克贝利·费恩”、“土著归来”、“圣诞颂歌”、“出埃及记”];是我在最初发布之前所拥有的。我应该有第一个数组书籍,然后使用 for 循环填充第二个数组作者,即 pop。按提示。

标签: javascript arrays infinite-loop


【解决方案1】:

我想你正在寻找这个:

var bookNames = [
    "War and Peace?",
    "Huckleberry Finn?",
    "The Return of the Native?",
    "A Christmas Carol?",
    "Exodus?"
];

for(var authorName = 0; authorName < books.length; authorName++)
{
   authors[authorName]=parseFloat(prompt("Who wrote " + bookNames[authorName] + "?"));
}

这只会触发 5 次,是执行您想做的事情的更好方法。另外,我会将authorName 的名称更改为更能描述它的名称。

【讨论】:

  • 是的!这就是我正在尝试做的事情,尽管我无法理解它。当我在逻辑上如此挣扎时,为什么我决定主修计算机编程,这超出了我的理解。英语更好但对计算机无休止地着迷的诅咒!我现在遇到的唯一问题是当我打开文件时它根本没有运行。就像没有提示出现一样。但逻辑非常合理,这也是我一直试图理清的。
【解决方案2】:

for 块中的每一行代码都运行指定的次数,在本例中为 books.length 次。每次循环运行循环计数器时,在本例中为 authorName,可用作具有当前值的变量,在本例中,它将在 5 次迭代中取值 0 到 4。

for(var authorName = 0; authorName < books.length; authorName++)
{
  authors[authorName] = prompt("Who wrote " + books[authorName] + "?");
}

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多