2010-12-16 71 views
0

我希望用戶輸入一個數字,但如果它低於零,我想顯示一條錯誤消息,然後循環並要求用戶輸入另一個數字。這是我目前的代碼。請幫助我已經與下面的if語句非常混淆

// this determines what the loop does. 
for (int CustPos = 0; CustPos < LineNum; CustPos = CustPos + 1) 
{ 
    // this asks the user to enter the sales figures 
    Console.Write("enter sales figures for" + customer[CustPos] + " "); 
    // this is user's input is read in and stored. 
    sales_figures[CustPos] = Double.Parse(Console.ReadLine()); 

    if (sales_figures[CustPos] < MIN_SALES_FIGURE) //True - continue 
    { 
     Console.WriteLine(""); 
     Console.WriteLine("entry invalid"); 
     Console.WriteLine("enter another value"); 
    } 
    else//FALSE -> Go back to start of loop 
    { 
     Console.WriteLine(""); 
    } 


    //this section displays the cust name, sales figure 70/30. 
    Console.WriteLine(" "); 
    fee_payable[CustPos] = (sales_figures[CustPos]/100.0) 
       * licence_fee_in_percent[CustPos]; 
    Console.WriteLine(customer[CustPos] + 
       " ----------- " + fee_payable[CustPos]); 
    Console.WriteLine("Licence fee to be paid in GBP is :" + 
       fee_payable[CustPos]); 
    seventy_percent_value = ((fee_payable[CustPos]/10.0) * 7); 
    Console.WriteLine("70 percent of this fee is" + 
        seventy_percent_value); 
    thirty_percent_value = ((fee_payable[CustPos]/10.0) * 3); 
    Console.WriteLine("30 percent of this fee is" + 
        thirty_percent_value); 
    Console.WriteLine(" "); 
} 

。請幫助所有建議將不勝感激!

感謝

+1

評論像'//這決定了循環does'是完全無用的。 ''循環遍歷文檔中的所有客戶'對未來的維護者來說會更有用。 – roufamatic 2010-12-16 14:31:53

+1

任何人都會這樣做:沒有理由:它被問到的很清楚,這是一個完全合法的問題。也@Banang,你問這是否是功課嗎?這可能是因爲斯蒂芬從一本書中解決問題,所以他可以自己學習編程。 – Crisfole 2010-12-16 14:35:54

+1

@Cpfohl,不,我沒問斯蒂芬是否是功課,你說得對,我應該這樣做。 @Stephen,這是功課嗎?如果是的話,沒關係,但如果沒有,告訴我,我會刪除我放在那裏的作業標籤。對不起,在我把它放在那裏之前不要問你。爲了記錄,我同意Cpfohl這個問題不應該得到一票否決票,這足以說明和比這裏的許多第一次問題風格問題更好。 – 2010-12-16 14:38:54

回答

1

你就是正確的軌道上,只看關鍵字Continue

這是例子鏈接:

using System; 
class ContinueTest 
{ 
    static void Main() 
    { 
     for (int i = 1; i <= 10; i++) 
     { 
      if (i < 9) 
      { 
       continue; 
      } 
      Console.WriteLine(i); 
     } 
    } 
} 

注:The continue statement passes control to the next iteration of the enclosing iteration statement in which it appears.

+1

Downvoter關心評論? – SwDevMan81 2010-12-16 14:38:47

+1

誰沒有發表評論? – 2010-12-16 14:40:36

+0

感謝問題排序! :) – 2010-12-16 15:16:39

3

我覺得一個do-while循環會更好這裏,僞代碼:

userInput = -1 
do 
{ 
    userInput = Console.ReadLine 
} 
while (userInput <0) 

科林·E.

0
if (sales_figures[CustPos] < MIN_SALES_FIGURE) //True - Continue     //FALSE -> Go back to start of loop 

你實際上並沒有任何代碼在這裏讓它回到循環的開始。

我建議你寫這一切爲僞代碼,然後再變成代碼:

if (number entered is too low) 
    then restart loop 
    otherwise carry on 
0

如果不是的,你會想了一會兒:

while(sales_figure[CustPos] < 0) 
{ 
    Console.Write("enter sales figures for" + customer[CustPos] + " "); 

    sales_figures[CustPos] = Double.Parse(Console.ReadLine()); 
} 

這保證它會繼續提示,直到他們進入的東西大於零。

繼續,是否不是做你想做的。繼續意味着,「繼續前進,忽略這個迭代」,這意味着你會爲該客戶獲得不正確的值。

+0

感謝問題排序! :) – 2010-12-16 15:16:16

0

使用while循環配搭您IF:

continueflag = 0; 
while (continueflag == 0) 
{ 
    sales_figures[CustPos] = Double.Parse(Console.ReadLine()); 

    Console.WriteLine(""); 

    if (sales_figures[CustPos] >= MIN_SALES_FIGURE) { 
     Console.WriteLine("entry invalid"); 
     Console.WriteLine("enter another value"); 
    } else continueflag = 1; 
} 
+0

繼續是一個關鍵字。你不應該把它用作變量名。 – Crisfole 2010-12-16 14:37:10

+0

coontinue未被設置爲一個變量,它只是一個評論,提醒我如果它的真實性繼續下去。 – 2010-12-16 15:17:57