我正在解决一些在大学里给出的问题,但我不能解决这个问题,练习是这样的。
创建一个程序,让用户在其中输入数字,直到他们输入"-1",在这种情况下,程序中断并打印输入数字的平均值。
我把这个写在JS上
array=[];
for( var i =0; i<3; i++){
val = parseInt(prompt( "Insert your numbers: "));
array.push(val)
}
function insert (array){
var sum = 0;
array.forEach(num=>{
sum+= (num) / array.length;
})
return sum
}
console.log( "Average is " + Math.round(insert(array)))
我试着去写。
if (val == -1){
breaks;
}
但它只是打破了一切。我知道也许有一个更简单的方法来解决它,可能我还在为循环中的逻辑而烦恼。问题是,如果用户插入-1,提示必须停止循环。
先谢谢你了!
那这个呢?
array = [];
while((val = parseInt(prompt( "Insert your numbers: ")))!=-1)
{
array.push(val)
}
function avg (array){
var sum = 0;
array.forEach(num=>{
sum += num;
})
return array.length ? sum / array.length : 0;
}
console.log( "Average is " + Math.round(avg(array)))
let numbers = [];
let val, sum, result
askForInput();
function askForInput(){
val = parseInt(prompt("Pls enter a number: "));
if(val == (-1)){
result = getAverage(numbers);
console.log("Result is: " + result);
} else {
askForInput();
}
}
function getAverage(array){
if(array.length == 0) return 0;
for(let i = 0; i < array.length; i++){
sum += array[i];
}
return sum / array.length;
}
一个使用递归的例子
我会把for循环改为while,这样只有当用户输入-1时,循环才会终止(你目前的写法是,一旦用户输入3个数字,for循环就会终止)。如果你在while循环之前初始化一个变量,这个变量的变化等于用户输入的数字,那么你甚至可以在循环定义中处理逻辑。
EX:
array = [];
user_input = 0;
while (user_input != -1 ) {
user_input = parseInt(prompt( "Insert a number: "));
array.push(user_input)
}
这段代码应该不断地提示用户,直到他们输入-1,这时while循环就会停止。你必须考虑到-1被推送到数组中,所以你可以在重新分配user_input的行后添加一个break语句,或者你可以在取平均数时处理它,对数组中除最后一个元素外的所有元素进行平均。