2016-03-30 19 views
0

ich das folgende Stück Code haben, die zwischen den Werten zurückzukehren 13 & -13, die nicht summieren sich zu 0. Das folgende ist das Bit von Javascript in Frage (I enthalten die volle JsFiddle unten) gemeint ist:Warum ist! == 0 Rückgabewerte gleich 0 anstatt ungleich 0?

$(document).ready(function() { 
    function GenerateRandomNumber() { 
    var min = -13, 
     max = 13; 
    var random = Math.floor(Math.random() * (max - min + 1)) + min; 
    return random; 
    } 
    var x = GenerateRandomNumber(); 

    function GenerateRandomNumber2() { 
    var min2 = -13, 
     max2 = 13; 
    var random2; 
    while ((random2 + x) !== 0) { 
     random2 = Math.floor(Math.random() * (max2 - min2 + 1)) + min2; 
    } 
    return random2; 
    } 
    var xx = GenerateRandomNumber2(); 
    $('#x').html(x); 
    $('#xx').html(xx); 
    $('#y').html(sum); 
}); 

JsFiddle: http://jsfiddle.net/vL77hjp0/

Allerdings scheint es, Werte zu zurückkehren, die gleich 0 sind kann ich nicht herausfinden, warum tut das Gegenteil von dem, was ich zu tun beabsichtigen „==“. Jede Hilfe würde sehr geschätzt werden.

+9

Lesen Sie Ihren Code. Sie sagen, solange die Summe nicht Null ist, wählen Sie eine neue Zufallszahl. Das bedeutet, dass es nur dann aufhört, wenn die Summe * Null ist. – hobbs

+0

Ich verstehe jetzt. Ich interpretierte, während ich "so" meinte. d.h. "finde eine neue Zahl, so dass die Summe nicht 0 ist." –

Antwort

0

Ihre While-Schleife versucht weiterhin, Werte zu finden, während der Wert nicht 0 ist. Wenn Sie Werte erhalten, die nicht zu 0 summieren, fahren Sie fort.

0

Random2 beginnt gleich Null, weil Sie es nicht auf einen Wert festgelegt haben.
Sie überprüfen dann, ob es nicht Null ist. Es ist Null, also passiert nichts. Dann geben Sie Random2 zurück, das immer noch Null ist.

0

Sie sollten das "while" in ein "do while" ändern, da Sie zuerst eine Zufallszahl generieren und danach prüfen müssen, ob die Summe Null ist. Also habe ich auch den Zustand geändert.

do { 
    random2 = Math.floor(Math.random() * (max2 - min2)) + min2; 
} while ((random2 + x) === 0) 
+0

Danke! Das funktioniert ... Ich bin nur ein wenig verwirrt, warum es funktioniert. In Laienbedeutung interpretiere ich dies so, dass "Finde eine Zufallszahl", so dass (die Summe dieser Zufallszahl und der vorherigen Zahl gleich 0 ist). In der Realität wird jedoch eine zufällige Zahl gefunden, während die gleiche der Zufallszahl und die vorherige Zahl NICHT gleich 0 ist. Es scheint, als ob es mit einem "! ==" statt mit einem "===" arbeiten sollte. Warum ist das der Fall? Vielen Dank! –

+0

Macht nichts - ich denke, ich verstehe es. Es heißt: "Solange Zufall + x gleich 0 ist, suche weiter nach einer neuen Zahl." –

Verwandte Themen