除了最高值和最低值之外,我已经让这段代码按照练习的要求工作了。我尝试过做最大和最小的事情,但我要么把它放在错误的地方,要么遗漏了一些东西。现在的工作方式与您输入例如 1 , 2 , 3, 11, 20 的情况不同,它表示最高的是 3。
它需要返回,以便显示您输入的内容,然后对其进行排序,显示数字的总和,然后显示最高和最低。
我哪里出错了?我猜我应该使用 max 和 min,但我似乎无法使用它们来让它工作。
<meta charset="UTF-8">
<title>Laskenta</title>
<script>
var yht=0; //total
var luku=0; //numbers entered
var suurin;// largest number entered
var pienin; // smallest number entered
var i;//counter
var heitto=new Array(5);//heitto= throw
for( var i = 0; i < heitto.length; i++) {
heitto[i]=prompt("anna ", i + 1 + " . heitto")
document.write ("Index " + i + ": " + "heitto = " + heitto[i]+"<br>");
if (i == 0) {
suurin = heitto[i];
pienin = heitto[i];
}
else {
if (heitto[i] > suurin) suurin = heitto[i];
if (heitto[i] < pienin) pienin = heitto[i];
}
yht+=parseInt(heitto[i]);
}
document.write ("<br>" + "suurin - pienin heittojen " + heitto.sort(function(a, b){return b-a}) + "<br>");
document.write("<br>" +"Syöttämiesi heittojen summa on " ,yht, "<br>");
document.write("<br />Suurin heitto on "+suurin);
document.write("<br />Pienin heitto on "+pienin);
</script>
最佳答案
基本上你有两个问题:
输入字符串而不是数值,这就是为什么
3
是最大值,但仅当3
是字符串时。按字符串排序'1', '11', '2', '20', '3'
。heitto[i] = +prompt("anna ", i + 1 + " . heitto"); // get the numerical value of input // ^
比较结果没有正确的起始值。
suurin = -Infinity; // initialize with a small number pienin = Infinity; // initialize with a big number
在获取最高值和最低值的循环中,您比较字符串,然后您得到结果,因为字符串的顺序。对于数值比较,最好提前将两个值转换为数值,方法是使用一元 +
隐式转换为 Number,或者使用 parseInt
, 显式转换parseFloat
或 Number
。
您的排序函数使用 -
隐式转换为数字。这就是为什么您得到的是数字排序数组而不是具有上述排序顺序的数组的原因。
var yht = 0; //total
var luku = 0; //numbers entered
var suurin; // largest number entered
var pienin; // smallest number entered
var i; //counter
var heitto = new Array(5);//heitto= throw
suurin = -Infinity; // initialize with a small number
pienin = Infinity; // initialize with a big number
for (var i = 0; i < heitto.length; i++) {
heitto[i] = +prompt("anna ", i + 1 + " . heitto"); // get the numerical value of input
document.write("Index " + i + ": " + "heitto = " + heitto[i] + "<br>");
if (heitto[i] > suurin) { suurin = heitto[i] };
if (heitto[i] < pienin) { pienin = heitto[i] };
yht += parseInt(heitto[i]);
}
document.write("<br>" + "suurin - pienin heittojen " + heitto.sort(function (a, b) { return b - a }) + "<br>");
document.write("<br>" + "Syöttämiesi heittojen summa on ", yht, "<br>");
document.write("<br />Suurin heitto on " + suurin);
document.write("<br />Pienin heitto on " + pienin);
关于javascript - 数组中最高和最低的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40948357/