2011-10-29 3 views
1

コードは、結果を返すことが予想されるまで実行されます。ユーザーが入力した値はすべて加算されません。助けてください?配列の負の要素と正の要素の和を求めるプログラムを書く

a = (prompt("a:")); 
b = (prompt("b:")); 
c = (prompt("c:")); 

negativeSum = Number(0); 
positiveSum = Number(0); 

var test = [a, b, c]; 

for (i = 0; i < test.length; i++) { 

    if (isNaN(test[i])) { 
     alert(test[i] + " : incorrect input."); 
    } 

    else 

    if (test[i] < 0) { 
     alert(test[i] + " : positive.") 
     negativeSum = Number(test[i]++); 
    } 
    else { 
     alert(test[i] + " : positive.") 
     positiveSum = Number(test[i]++); 
    } 
} 

alert(positiveSum + " : sum of +ve elements"); 
alert(negativeSum + " : sum of -ve elements"); 
+0

このクラスは機能しますか? –

+0

JSの詳細を学びたい人のためのオプションの実践的な仕事です。私は1ヶ月前にJSを学び始めたばかりなので、ちょっと試してみました! – methuselah

答えて

2

は、常にネガティブの合計ではなく、正の合計ではありません。絶対差分について話したら より試着

if (test[i] < 0) { 
     alert(test[i] + " : positive.") 
     negativeSum += Number(test[i]); 
    } 
    else { 
     alert(test[i] + " : positive.") 
     positiveSum += Number(test[i]); 
    } 

//after the loop 

return Math.abs(negativeSum) > positiveSum; 
1

いくつかのこと - Number(0)の必要はありません - ちょうど0を使用して行います。

ライン:

positiveSum = Number(test[i]++); 

は単にpositiveSumに(これはポストインクリメント++オペレータが何である)test[i] + 1の値を代入します。それは、negativeSumのために同じことが真である(positiveSumにそれを追加しません

これは良い仕事する必要があります。私のコードで

negativeSum = 0; 
positiveSum = 0; 

var test = [a, b, c]; 

for (i = 0; i < test.length; i++) { 

    if (isNaN(test[i])) { 
     alert(test[i] + " : incorrect input."); 
    } 

    else 

    if (test[i] < 0) { 
     alert(test[i] + " : positive.") 
     negativeSum += test[i]; 
    } 
    else { 
     alert(test[i] + " : positive.") 
     positiveSum += test[i]; 
    } 
} 

行を:

negativeSum += test[i]; 

は同等です

negativeSum = negativeSum + test[i]; 
1

あなたは何も加算していません。それぞれを増やしていますあなたが入力した番号。あなたは正のSUM + =(各数値)を求めます。

また、ゼロとの比較を行う前に要素を数値に変換する必要があります。

+0

彼は単にインクリメントしているだけではありません。結果に、合計に加算する代わりに合計であると考えられる変数に結果を代入しています。 – Oded

+0

@Odedわかっています。私は誰かがちょうど学んでいることが明らかなときに答えを渡すだけではない。 –

関連する問題