在javascript中使用for循环编写一段代码,提示用户输入任意数量的数字,然后打印这些数字中的最大值和最小值

在javascript中使用for循环编写一段代码,提示用户输入任意数量的数字,然后打印这些数字中的最大值和最小值,javascript,Javascript,JS新手,这里有个问题,代码要求用户输入任意数量的数字-1结束,找到并显示最大和最小的数字;它正在工作,只是它将最小的显示为最大的,但显示的是最大的 好的 代码的问题是numInputs只解析您输入的第一个数字。因此,如果您将字符串1 2 3 4 5-1放入,numInputs将获得值1 下面是一段代码片段,可以解决您的问题: var largestNum, smallestNum; var numInput = parseInt(prompt("Please enter the next nu

JS新手,这里有个问题,代码要求用户输入任意数量的数字-1结束,找到并显示最大和最小的数字;它正在工作,只是它将最小的显示为最大的,但显示的是最大的 好的


代码的问题是numInputs只解析您输入的第一个数字。因此,如果您将字符串1 2 3 4 5-1放入,numInputs将获得值1

下面是一段代码片段,可以解决您的问题:

var largestNum, smallestNum;
var numInput = parseInt(prompt("Please enter the next number (-1 to exit)"));
if (numInput != -1) {
    largestNum = numInput;
    smallestNum = numInput;
}

while (numInput != -1) {
    if (numInput > largestNum) {
        largestNum = numInput;
    } else if (numInput < smallestNum) {
        smallestNum = numInput;
    }
    numInput = parseInt(prompt("Please enter the next number (-1 to exit)"));
}

alert("Smallest number is " + smallestNum + ", largest number is " + largestNum);
正如你所看到的,我在得到最小和最大的数字时实时更新它们,而不是在得到所有输入之后。 此外,为了简单起见,我将第一个数字设置为最小值和最大值,而不是将固定值设置为0和9999,这可能是错误的。 最后,我分别为每个数字做了一个提示,所以您不能同时输入它们。为此,您必须拆分字符串并存储在数组中,然后迭代数组元素

var a = [],
    value;

value = parseInt(prompt("Please enter numbers seperated by a space end with - 1 "));
while (value !== -1) {
    a.push(value);
    value = parseInt(prompt("Please enter numbers seperated by a space end with - 1 "));
}

a.sort();
console.log(a);

alert("The largest number entered was " + a[a.length-1]);
alert("The smallest number entered was " + a[0]);
编辑: 如果要对大于9的数字进行排序,请使用:

a.sort(function(a,b){ return a - b });

在这里重构一下你的代码怎么样。我们删除了parseInt,因为它不起作用,然后将输入的数字用空格分割成一个数组,对数组进行排序,然后对数组中的数字进行弹出和移位,分别删除最后一个和第一个数字

这是一个例子

代码:


你的代码没有太多意义

numInputs将是一个由空格分隔的StringNumber,您需要将其解析为一个数组,如:

numInputs = prompt("Please enter numbers...")).split(" ");
然后,您应该在数组中循环并检查最大值和最小值,如:

var smallestNum = numInputs[0];
var largestNum = numInputs[0];

for(var i=0; i<numInputs.length; i++) {
    if (smallestNum > numInputs[i]) {
        smallestNum = numInputs[i];
    } else if (largestNum < numInputs[i]) {
        largestNum = numInputs[i];
    }
}

它在工作,除了-我真的认为它根本不工作。parseInt的工作方式与您想象的不同:如果您给它一个以空格分隔的数字字符串,它将返回第一个数字。即使它确实返回了一个包含所有数字的数组,或者所有数字的计数,您的循环也没有意义,因为您正在将numInputs与largestNum变量进行比较;在循环中从不使用i。这很好也很简洁,但考虑到这一点,它不会起作用。默认情况下,sort不会进行数字排序。@nnnnnn这是我想到的,因为我注意到默认情况下它是一个字符串。如果需要的话,他可能只需要将输出值解析为int。您只需要将一个比较函数传递给.sort,它就可以正常工作:-注意,您还需要按降序对其进行排序,或者颠倒使用.pop和.shift-since.pop的顺序。pop从数组的末尾开始。因为是的,这是我的观点。我将删除我以前的评论,因为您已通过编辑对其进行了修复。
numInputs = prompt("Please enter numbers...")).split(" ");
var smallestNum = numInputs[0];
var largestNum = numInputs[0];

for(var i=0; i<numInputs.length; i++) {
    if (smallestNum > numInputs[i]) {
        smallestNum = numInputs[i];
    } else if (largestNum < numInputs[i]) {
        largestNum = numInputs[i];
    }
}