2016-12-03 14 views
1

このコードは、エクササイズが最高値と最低値を除いて尋ねたように機能しています。私は最大と最小のことをやってみましたが、間違った場所に置いたり何かを見逃したりしています。たとえば、1,2,3,11,20のように入力すると、最高のものが3と表示されます。配列の最大値と最小値の問題

入力した内容が表示されるように戻ってくる必要があります。それを並べ替え、それは数字の合計を示し、次に最高と最低を示します。

どこが間違っていますか?私は最大と最小を使用する必要があります推測するが、私はちょうどそれらを使用して動作するように感じていない。

<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

まずはコーディング、それはそれは非常に難しいコードを追跡することができたときに、第二、 'appendChild'を使用し、' document.write'を使用していない、外国語を使用しないでください – LGSon

+0

申し訳ありませんフィンランド語で勉強している私はなぜ外国語を使用しています。 – sueT

答えて

0

は、基本的には二つの問題があります:3が最大の値ですが、3が文字列の場合にのみ、なぜ

  • 文字列の代わりに、入力のための数値を、thatsの。文字列で注文する'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またはNumberで明示的にキャストします。

ソート機能で暗黙のキャストを使用して、-という番号を付けています。 Tahtは、上記のようなソート順の配列ではなく、数値のソートされた配列を得る理由です。

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);

+0

私がやった他のものを振り返ってみると、わかりました。私はプロンプトの前にparseIntを追加しましたが、今はOK – sueT

+0

でも動作しますが、最小値と最大値を取得するための開始値の問題は変わりません。 –

関連する問題