2014-02-28 53 views
0
while(userInput!= -1) 
{ 
    var total=0.0; 
    var totalEarnings=0; 
    var item; 
    //var userInput; 
    var salesPerson=1; 
    var userInput= parseInt(prompt("outsidePlease enter noOfItemsSold of Item# 1 sold for SalesPerson #"+salesPerson+"\n"+" OR -1 to Exit ")); 
    salesPerson++; 
    //alert("in while "+salesPerson); 
    //userInput= parseInt(prompt("Please enter noOfItemsSold of Item# "+item+" sold for SalesPerson #"+salesPerson+"\n"+" OR -1 to Exit ")); 
    //if(userInput!=-1) 
    //{ 
    for(item=2;item<5;item++) 
    { 
     //userInput= parseInt(prompt("Please enter noOfItemsSold of Item# "+item+" sold for SalesPerson #"+salesPerson+"\n"+" OR -1 to Exit ")); 

     //var noOfItemsSold = parseInt(userInput); 

     if (item == 1) 
     { 
      total += userInput * 239.99; 
     } 
     else if (item == 2) 
     { 
      total += userInput * 129.75; 
     } 
     else if (item == 3) 
     { 
      total += userInput * 99.95; 
     } 
     else if (item == 4) 
     { 
      total += userInput * 350.89; 
     } 
     var input= parseInt(prompt("Please enter noOfItemsSold of Item# "+item+" sold for SalesPerson #"+salesPerson+"\n"+" OR -1 to Exit ")); 
    } 
    totalEarnings = .09 * total + 200; 
    document.writeln("<h1>SalesPerson#"+salesPerson+" Total Earnings this week is " +totalEarnings +"</h1>"); 
} 

我試圖運行連續循環。腳本正在計算銷售人員的總收入,我想運行腳本直到用戶輸入-1。 我不知道我在做什麼錯,但這是行不通的。 我該如何解決這個問題?如何在javascript中運行連續循環

+1

我想你可能需要在while循環之外實例化userInput,而不是在它之內。 – Bob

+2

當你說*這不工作*,你能更具體嗎? –

+0

@Bob - 我認爲可變提升實際上會讓這個工作,但我同意它馬虎。 –

回答

0
while (1) { 


    if (condition met) { 
     break; 
    } 
} 

在您的條件測試(插入您的條件爲真)之前,您的循環將始終爲真,然後它會中斷並繼續執行其餘代碼。

+0

這正是'while(condition)'*做的*。您剛剛將條件測試移至'while'塊的底部,而不是在下一個循環的開始處評估它。這會起作用,但它不會帶來任何好處,並會降低可讀性。海報的根本問題是他並沒有首先測試正確的條件。 – greenie2600

0

基本上,只有在循環迭代完成之後纔會評估條件。因此,如果用戶鍵入-1,那麼for循環仍將被執行,這可能不是您想要的。

我建議使用break;關鍵字來退出循環。嘗試是這樣的:

while(true) // Loop forever, since we'll break manually 
{ 
    var total = 0.0; 
    var totalEarnings = 0; 
    var item; 
    var salesPerson = 1; 
    var userInput = parseInt(prompt("outsidePlease enter noOfItemsSold of Item# 1 sold for SalesPerson #"+salesPerson+"\n"+" OR -1 to Exit ")); 
    salesPerson++; 

    if(userInput == -1) // Exit immediately! 
    break; 

    for(item=2;item<5;item++) 
    { 
    // ... 
    } 
} 
0

我清理了一下代碼:

var total; 
var totalEarnings; 
var item; 
var salesPerson; 
var userInput; 
var input; 

while (userInput != -1) { 

    total = 0.0; 
    totalEarnings = 0; 
    salesPerson = 1; 
    userInput = parseInt(prompt("outsidePlease enter noOfItemsSold of Item# 1 sold for SalesPerson #" + salesPerson + "\n OR -1 to Exit"), 10); 
    salesPerson++; 

    for (item = 2; item < 5; item++) { 

     if (item == 1) { 
      total += userInput * 239.99; 
     } else if (item == 2) { 
      total += userInput * 129.75; 
     } else if (item == 3) { 
      total += userInput * 99.95; 
     } else if (item == 4) { 
      total += userInput * 350.89; 
     } 
     input = parseInt(prompt("Please enter noOfItemsSold of Item# " + item + " sold for SalesPerson #" + salesPerson + "\n OR -1 to Exit")); 

    } 

    totalEarnings = .09 * total + 200; 
    document.writeln("<h1>SalesPerson#" + salesPerson + " Total Earnings this week is " + totalEarnings + "</h1>"); 

} 

你的循環將重複只要userInput比-1值。

現在讓我們來看一下是什麼每次循環的作用:

  1. 據一些初始值分配給幾個變量。

  2. 它提示用戶輸入一個值;該值分配給userInput

  3. 然後,它(而奇怪)重複類似提示給用戶,此時將它們分配給inputuserInput),並使用它們來執行計算爲total

userInput是不斷賦值唯一的一次是在第2步:

userInput = parseInt(prompt("outsidePlease enter noOfItemsSold of Item# 1 sold for SalesPerson #" + salesPerson + "\n OR -1 to Exit"), 10); 

如果你輸入-1作爲輸入這裏,循環will終止,正如預期。

+0

我的方法爲一個人做了計算,但又沒有再次運行程序我想運行我的第二個人的循環,所有變量初始化爲初始值,所以我已經在while循環中聲明瞭它們,但即使用戶在此輸入-1語句它不退出循環userInput = parseInt(prompt(「outsidePlease輸入noOfItemsSold銷售的SalesPerson#」+ salesPerson +「\ n OR -1退出」),10); – user3109794

+0

「儘管用戶在此語句中輸入-1,但它不退出循環」 這不是事實。如果你輸入-1作爲第一個數字*,那麼它*會退出循環。 這是因爲第一個提示是唯一一次爲'userInput'賦值的唯一時間。隨後提示的值將被分配給'input',這是一個不同的變量,並且不會被您的'while'條件檢查。 雖然這個代碼有很多其他的錯誤。例如,不需要第一次分別調用prompt(),然後使用循環在接下來的三次調用它。 – greenie2600