除了最高和最低值之外,我的代码工作正如练习所要求的那样。我试过做最大和最小的事情,但我要么把它放在错误的地方或丢失的东西。它现在的工作方式除了如果你输入例如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>
答案 0 :(得分:0)
基本上你有两个问题:
字符串而不是输入的数值,这就是为什么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
在获取最高值和最低值的循环中,你是比较字符串,然后你得到结果,因为字符串的顺序。对于数值比较,最好将两个值预先转换为数值,使用隐式转换为带有一元+
的数字,或显式带有parseInt
,parseFloat
或{{1 }}
您的排序功能使用隐式转换来编号为Number
。 Taht是你得到一个numericl排序数组而不是像上面这样的排序顺序的数组的原因。
-