Javascript 获取数组的平均数,若其中一个在JS上为-1,则中断

Javascript 获取数组的平均数,若其中一个在JS上为-1,则中断,javascript,arrays,algorithm,for-loop,break,Javascript,Arrays,Algorithm,For Loop,Break,我正在解决一些在大学里遇到的问题,但我不能解决这个问题。 这个练习是这样的: 创建一个程序,用户在其中输入数字直到输入“-1”,在这种情况下,程序将中断并打印输入的数字的平均值 这是我在JS上写的 array=[]; for( var i =0; i<3; i++){ val = parseInt(prompt( "Insert your numbers: ")); array.push(val) } function insert

我正在解决一些在大学里遇到的问题,但我不能解决这个问题。 这个练习是这样的:

创建一个程序,用户在其中输入数字直到输入“-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)))
但它只是破坏了一切。我知道也许有一个更简单的方法来解决这个问题,也许我还在用循环的逻辑来挣扎。问题是,如果用户插入-1,promps必须停止循环

提前谢谢

这个怎么样:

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)))
这个怎么样:

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 number=[];
让val、sum、result
askForInput();
函数askForInput(){
val=parseInt(提示(“请输入一个数字:”);
如果(val==(-1)){
结果=getAverage(数字);
console.log(“结果为:”+Result);
}否则{
askForInput();
}
}
函数getAverage(数组){
如果(array.length==0)返回0;
for(设i=0;i
使用递归的示例

让数字=[];
让val、sum、result
askForInput();
函数askForInput(){
val=parseInt(提示(“请输入一个数字:”);
如果(val==(-1)){
结果=getAverage(数字);
console.log(“结果为:”+Result);
}否则{
askForInput();
}
}
函数getAverage(数组){
如果(array.length==0)返回0;
for(设i=0;i

使用递归的示例

我将for循环更改为while,这样,只有当用户输入-1时,循环才会终止(按照您当前编写的方式,for循环将在用户输入3个数字后终止)。如果在while循环之前初始化一个变量,该变量将更改为等于用户输入,那么您甚至可以处理循环定义中的逻辑

例:


此代码将持续提示用户,直到他们输入-1,此时while循环将停止。

我会将for循环更改为while,以便仅当用户输入-1时循环才会终止(按照您当前编写的方式,for循环将在用户输入3个数字后终止)。如果在while循环之前初始化一个变量,该变量将更改为等于用户输入,那么您甚至可以处理循环定义中的逻辑

例:


此代码应持续提示用户,直到他们输入-1,此时while循环将停止。

方法看起来正确,但没有
中断
关键字。是的,在
val=parseInt
谢谢@SunilChaudhary之后,你必须在循环中使用它,它解决了这个问题,[break]写得很好,我只是把它放在循环之外。我得改进一下逻辑,哈哈。非常感谢:)方法看起来是正确的,但是没有
中断
关键字。是的,在
val=parseInt
谢谢@SunilChaudhary之后,你必须在循环中使用它,它解决了这个问题,[break]写得很好,我只是把它放在循环之外。我得改进一下逻辑,哈哈。真的谢谢:)谢谢@rorychatt,我是Js的新生,你的代码让我开始学习递归。非常有帮助!谢谢@rorychatt,我是Js的新生,你的代码让我开始学习递归。非常有帮助!问题是,在用户写入-1之前,它一直在循环。它应该在某个点停止以返回以前输入的平均数。无论如何,谢谢你,我还没有计算过我能用多少呢。@Juliet,这就是我的想法,不是吗?用户可以通过键入“-1”随时停止。问题是,在用户写入-1之前,它会一直循环。它应该在某个点停止以返回以前输入的平均数。无论如何,谢谢你,我还没有计算过我能用多少呢。@Juliet,这就是我的想法,不是吗?用户可以通过键入“-1”随时停止。
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;
}
array = []; 
user_input = 0;

while (user_input != -1 ) {
 user_input = parseInt(prompt( "Insert a number: "));
 array.push(user_input)
}