2016-04-19 22 views
0

這是我需要幫助的問題。我有一個錯誤,並出於某種原因的數字正在改變,而不是名稱?

我需要將名稱隨機更改。我還需要這兩個選項的名稱相同。

如果您注意到,可以使兩個隨機名稱相同。我犯了一些錯誤,我需要解決這個問題,以便第一個和第二個名稱是唯一的。我想將生成的名字傳遞給第二個名字的getoption函數,以便第二個名字不能是這個名字。這是我有麻煩,有人可以幫我嗎?

到目前爲止我的代碼,使數改變,但我不知道如何隨機名稱

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

會如果你修好你的話ndentation。謝謝,麻煩您了。 – azium

+0

我已經修復了縮進 –

+0

確保遵循此處列出的準則http://stackoverflow.com/help/someone-answers成爲社區的高效成員。順便說一句,歡迎來到Stack Overflow! – timolawl

回答

1

您可以添加以下,以確保項目名稱是不一樣的:

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

您還末從str缺少johnstuff

嘗試運行下面的代碼,看看它的工作原理:

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

您好,我已將該部分添加到您提供給我的頂部,但它仍然會給我一個錯誤,您能否告訴我我做錯了什麼? –

+0

是的,你最後還在'str'中缺少'johnstuff'。 – timolawl

+0

嗨你的代碼仍然不會生成新的字符名稱,如約翰 –

1

試試這個,它爲我工作:

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

嗨,當我運行它的兩個名稱生成瑪麗我如何使它,所以名稱是不一樣的? –

+0

你得到的是什麼字符串?我得到這樣的東西:「瑪麗有51美元,約翰有62美元,瑪麗買了14美元的揹包,約翰買了6美元的尺子,他們有93美元。」 – gevorg

+0

好吧,我想我現在得到它,更新的代碼,請重新檢查。 – gevorg

相關問題