[英]How do I fix this code? It's use 3 seperate functions one to add to the array, one to sort and one to display. Javascript
I'm doing a question that asks: Read 10 numbers and print the biggest number from the list of reading numbers.我正在做一个问题:读取 10 个数字并打印读取数字列表中的最大数字。 Make use of Array and Functions.使用数组和函数。 One Function to read the integer numbers and another function to print the biggest number from the list.一个函数读取整数,另一个函数打印列表中的最大数字。 I'm having trouble with getting the biggest number and returning it back to the code so that I can display it.我在获取最大数字并将其返回到代码中时遇到了麻烦,以便我可以显示它。 I've messed around with it allot so it might not make as much sense right now (I'm sorry).我已经弄乱了它的分配,所以它现在可能没有多大意义(对不起)。 I've been stuck on it forever any help would be much appreciated :).我一直坚持下去,任何帮助将不胜感激:)。
var numbers = [];
var BiggestNumber = 0;
BigestNumber = BiggestSort(numbers);
numbers = ReadNumbers();
Display(BiggestNumber)
function ReadNumbers() {
var ArgNumbers = [];
var ArgInput;
var ctr;
for (ctr = 0; ctr < 3; ctr++) {
ArgInput = parseFloat(prompt("Please enter a number: "));
ArgNumbers.push(ArgInput);
}
return ArgNumbers;
}
function BiggestSort(ArgNumber) {
var ArgNumber = [];
var ArgBiggest = 0;
var ctr;
for (ctr = 0; ctr < 3; ctr++)
if (ArgNumber[ctr] > ArgBiggest) {
ArgBiggest = ArgNumber[ctr];
}
return ArgBiggest;
}
function Display(ArgNumber) {
alert("The biggest number was: " + ArgNumber);
}
I've added a snippet at the end that demonstrates how I might do such a thing from scratch, but let's look at your code first:我在最后添加了一个片段来演示我如何从头开始做这样的事情,但让我们先看看你的代码:
From the top:从一开始:
There's no need to declare numbers
and BiggestNumber
with initial values and then immediately reassign them.无需使用初始值声明numbers
和BiggestNumber
,然后立即重新分配它们。 Declare them at assignment time:在分配时间声明它们:
// var numbers = [];
// var BiggestNumber = 0;
const BigestNumber = BiggestSort(numbers);
const numbers = ReadNumbers();
There's a typo in BigestNumber
(missing second 'g'): BigestNumber
有一个错字(缺少第二个“g”):
// const BigestNumber = BiggestSort(numbers);
const BiggestNumber = BiggestSort(numbers);
const numbers = ReadNumbers();
You're calling BiggestSort(numbers)
before numbers
has a meaningful value.您在numbers
具有有意义的值之前调用BiggestSort(numbers)
。 Call ReadNumbers()
first to initialize numbers
, then pass it to BiggestSort
:首先调用ReadNumbers()
初始化numbers
,然后将其传递给BiggestSort
:
// const BiggestNumber = BiggestSort(numbers);
// const numbers = ReadNumbers();
const numbers = ReadNumbers();
const BiggestNumber = BiggestSort(numbers);
Again, no need to declare ArgInput
and ctr
separately.同样,无需分别声明ArgInput
和ctr
。 It doesn't really hurt anything, but it's unnecessary:它并没有真正伤害任何东西,但它是不必要的:
function ReadNumbers() {
const ArgNumbers = [];
// var ArgInput;
// var ctr;
for (let ctr = 0; ctr < 3; ctr++) {
const ArgInput = parseFloat(prompt("Please enter a number: "));
ArgNumbers.push(ArgInput);
}
return ArgNumbers;
}
You're receiving an ArgNumber
parameter, and then declaring another variable with the same name.您收到一个ArgNumber
参数,然后声明另一个具有相同名称的变量。 Use the argument passed in.使用传入的参数。
Because the ArgNumber
parameter is an array, you can use its length
property in the loop condition instead of hard-coding 3.由于ArgNumber
参数是一个数组,因此您可以在循环条件中使用其length
属性,而不是硬编码 3。
You're missing curly braces around your loop body.你的循环体周围缺少花括号。
function BiggestSort(ArgNumber) {
// var ArgNumber = [];
let ArgBiggest = 0;
// var ctr;
// for (ctr = 0; ctr < 3; ctr++)
for (let ctr = 0; ctr < ArgNumber.length; ctr++) { // added curly brace
if (ArgNumber[ctr] > ArgBiggest) {
ArgBiggest = ArgNumber[ctr];
}
} // added closing brace
return ArgBiggest;
}
With the changes described above, it works:通过上述更改,它可以工作:
const numbers = ReadNumbers(); const BiggestNumber = BiggestSort(numbers); Display(BiggestNumber); function ReadNumbers() { const ArgNumbers = []; for (let ctr = 0; ctr < 3; ctr++) { const ArgInput = parseFloat(prompt("Please enter a number: ")); ArgNumbers.push(ArgInput); } return ArgNumbers; } function BiggestSort(ArgNumber) { let ArgBiggest = 0; for (let ctr = 0; ctr < ArgNumber.length; ctr++) { if (ArgNumber[ctr] > ArgBiggest) { ArgBiggest = ArgNumber[ctr]; } } return ArgBiggest; } function Display(ArgNumber) { alert("The biggest number was: " + ArgNumber); }
Consider this approach:考虑这种方法:
// A function to prompt for a series of numbers: // The 'count' parameter is how many numbers to prompt for. // The 'previous' parameter is an array of the numbers already entered, initally empty. function readNumbers (count, previous = []) { // if count is zero, we're done. return the already entered numbers. if (count === 0) { return previous; } // prompt for the next number const number = parseFloat(prompt('Enter a number: ')); // push the new number onto the end of the list previous.push(number); // call readNumbers again, subtracting one from 'count' // and return whatever it returns. return readNumbers(count - 1, previous); } // invoke readNumbers to prompt the user. const numbers = readNumbers(3); // use Math.max to find the largest number const largest = Math.max(...numbers); // show the result alert(`The biggest number was ${largest}`);
Correct typos like BigestNumber
and BiggestNumber
.更正诸如BigestNumber
和BiggestNumber
类的拼写错误。
do ReadNumbers
before BiggestSort
method call.在调用BiggestSort
方法之前执行ReadNumbers
。
remove\\avoid reassigning to parameters\\args you pass into method scopes, ie ArgNumber
in the BiggestSort
method.除去\\避免重新分配给你传递到方法范围参数\\指定参数时,即ArgNumber
在BiggestSort
方法。
var numbers = []; numbers = ReadNumbers(3); BiggestNumber = BiggestSort(numbers); Display(BiggestNumber) function ReadNumbers(numberToRead) { var ArgNumbers = []; var ArgInput; for (var ctr = 0; ctr < numberToRead; ctr++) { ArgInput = parseFloat(prompt("Please enter a number: ")); ArgNumbers.push(ArgInput); } return ArgNumbers; } function BiggestSort(ArgNumber) { var ArgBiggest = 0; for (var ctr = 0, max = ArgNumber.length; ctr < max; ctr++) if (ArgNumber[ctr] > ArgBiggest) { ArgBiggest = ArgNumber[ctr]; } return ArgBiggest; } function Display(ArgNumber) { alert("The biggest number was: " + ArgNumber); }
I also passed in the number of loops ( numberToRead
) and ensure the loop in BiggestSort
uses the length of the passed array ( ArgNumber
).我还传入了循环数 ( numberToRead
) 并确保BiggestSort
的循环使用传递数组的长度 ( ArgNumber
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.