2016-04-19 8 views
0

Das ist die Frage, auf die ich Hilfe brauche.Ich habe einen Fehler und aus irgendeinem Grund werden die Nummern geändert und nicht die Namen?

Ich muss die Namen zufällig ändern lassen. Ich brauche auch die Namen für beide Auswahl identisch sein.

Wenn Sie bemerken, ist es möglich, dass die beiden Zufallsnamen identisch sind. Ich habe einen Fehler gemacht und muss dies beheben, so dass der erste und der zweite Name eindeutig sind. Ich wollte den ersten erzeugten Namen an die Funktion getoption des zweiten Namens übergeben, damit der zweite Name nicht dieser Name sein kann. Das ist was ich habe Probleme mit kann mir bitte jemand helfen?

Bisher habe ich den Code die Zahlen machen ändern, aber ich bin nicht sicher, wie die Namen

function getrandomnumber(min, max, notin) { 
 
    return min + Math.floor((max - min + 1) * Math.random()) 
 
} 
 

 
function getoption(s, ch, num) { 
 
    var a = s.split(ch); 
 
    return a[num - 1]; 
 
} 
 

 
var marymoney = getrandomnumber(50, 100, ""); 
 
var johnmoney = getrandomnumber(50, 100, ""); 
 
var maryitem = getrandomnumber(5, 20, ""); 
 
var johnitem = getrandomnumber(5, 20, ""); 
 
var marystuff = getoption("notebook,pencil,ruler,pen,eraser,binder,backpack", ",", getrandomnumber(1, 7)); 
 
var johnstuff = getoption("notebook,pencil,ruler,pen,eraser,binder,backpack", ",", getrandomnumber(1, 7)); 
 
var totalleft = marymoney + johnmoney - maryitem - johnitem; 
 
var str = "Mary had $" + marymoney + " and John had $" + johnmoney + ".   Mary buys a " + marystuff + " for $" + maryitem + " and John buys a " + +"   for $" + johnitem + ". They have $" + totalleft + "."; 
 

 
document.write(str);

+0

Es wäre Hilfe, wenn Sie Ihren i Indentation. Bitte und Danke. – azium

+0

Ich habe die Einrückung für Sie behoben –

+0

Stellen Sie sicher, dass Sie die hier aufgeführten Richtlinien http://stackoverflow.com/help/someone-answers befolgen, um ein produktives Mitglied der Community zu sein. Willkommen bei Stack Overflow, übrigens! – timolawl

Antwort

1

Sie können randomisieren hinzufügen Folgenden werden die Elementnamen, um sicherzustellen, nicht gleich sind:

while(marystuff === johnstuff) { 
    johnstuff = getoption("notebook,pencil,ruler,pen,eraser,binder,backpack", ",", getrandomnumber(1, 7)); 
} 

Sie auch johnstuff von Ihrem str am Ende fehlen.

Versuchen Sie den Code ausgeführt wird unten, um zu sehen, dass es funktioniert:

var person1, person2; 
 

 
function getPeople() { 
 
    var people = ['Mary', 'John', 'Misa', 'Steve', 'Amy', 'David']; 
 

 
    person1 = people[Math.floor(Math.random() * people.length)]; 
 
    person2 = people[Math.floor(Math.random() * people.length)]; 
 

 
    while (person1 === person2) { 
 
    person2 = people[Math.floor(Math.random() * people.length)]; 
 
    } 
 
} 
 
function getrandomnumber(min, max, notin) { 
 
    return min + Math.floor((max - min + 1) * Math.random()); 
 
} 
 

 
function getoption(s, ch, num) { 
 
    var a = s.split(ch); 
 
    return a[num - 1]; 
 
} 
 

 
var marymoney = getrandomnumber(50, 100, ""); 
 
var johnmoney = getrandomnumber(50, 100, ""); 
 
var maryitem = getrandomnumber(5, 20, ""); 
 
var johnitem = getrandomnumber(5, 20, ""); 
 
var marystuff = getoption("notebook,pencil,ruler,pen,eraser,binder,backpack", ",", getrandomnumber(1, 7)); 
 

 
var johnstuff = getoption("notebook,pencil,ruler,pen,eraser,binder,backpack", ",", getrandomnumber(1, 7)); 
 

 
while(marystuff === johnstuff) { 
 
    johnstuff = getoption("notebook,pencil,ruler,pen,eraser,binder,backpack", ",", getrandomnumber(1, 7)); 
 
} 
 
getPeople(); 
 
var totalleft = marymoney + johnmoney - maryitem - johnitem; 
 
var str = person1 + " had $" + marymoney + " and " + person2 + " had $" + johnmoney + ". " + person1 + " buys a " + marystuff + " for $" + maryitem + " and " + person2 + " buys a " + johnstuff + " for $" + johnitem + ". They have $" + totalleft + "."; 
 

 
document.write(str);

+0

Hallo, ich habe den Teil oben hinzugefügt, den Sie mir zur Verfügung gestellt haben und es gibt mir immer noch einen Fehler, können Sie sagen mir was mache ich falsch? –

+0

Ja, am Ende fehlt dir auch "johnstuff" in deiner "str". – timolawl

+0

Hallo Ihr Code erzeugt immer noch keine neuen Charakternamen wie John –

1

Try this, es funktioniert für mich:

function getrandomnumber(min, max, notin) { 
 
    return min + Math.floor((max - min + 1) * Math.random()) 
 
} 
 

 
function getoptions(s, ch) { 
 
    var a = s.split(ch); 
 
    a.sort(function() { return 0.5 - Math.random() }); 
 

 
    return a; 
 
} 
 

 
var marymoney = getrandomnumber(50, 100, ""); 
 
var johnmoney = getrandomnumber(50, 100, ""); 
 

 
var maryitem = getrandomnumber(5, 20, ""); 
 
var johnitem = getrandomnumber(5, 20, ""); 
 

 
var stuff = "notebook,pencil,ruler,pen,eraser,binder,backpack"; 
 
var options = getoptions(stuff, ','); 
 

 
var marystuff = options[0]; 
 
var johnstuff = options[1]; 
 

 
var totalleft = marymoney + johnmoney - maryitem - johnitem; 
 

 
var str = "Mary had $" + marymoney + " and John had $" + johnmoney + 
 
     ".   Mary buys a " + marystuff + " for $" + maryitem + 
 
     " and John buys a " + johnstuff + "   for $" + johnitem + 
 
     ". They have $" + totalleft + "."; 
 

 
document.write(str);

+0

Hallo, wenn ich es ausführen beide Namen generieren Mary wie mache ich es so die Namen sind nicht die gleichen? –

+0

Was ist die vollständige Zeichenfolge, die Sie erhalten?Ich bekomme etwas wie das: "Mary hatte 51 $ und John hatte 62 $. Mary kauft einen Rucksack für 14 $ und John kauft ein Lineal für 6 $. Sie haben 93 $." – gevorg

+0

Ok, ich denke ich bekomme es jetzt, aktualisierter Code, bitte nochmal nachschauen. – gevorg

Verwandte Themen