2011-04-05 52 views
0

對不起,我在這方面有一些煩惱,我錯過了大部分的陣列講座,所以我不得不依靠谷歌趕上,因爲我需要將它們實施到這個任務。每次選擇C#數組時,將「1」添加到C#數組中?

因此,我有兩個數組,一個顯示名稱(披薩的頂部),另一個指定每個頂部的值(每個頂部最多隻能有三個頂點,比如單個頂點,雙頂點或三個頂點)的奶酪)。可能有一種方法可以將它保存爲一個數組,但我不確定如何給字符串賦值,除非投射工作。我只做過一次,所以我不確定。

無論如何,我不想列出所有9種澆頭,而是想製作一個簡單的語句來滿足所有這些澆頭,並用一個整數代替數組值。我沒有這臺計算機,但它是這樣的:

int i = toppSelection - 1;  //If users presses 1 first topping is selected, but first 
           //topping in array would be 0 

if(toppSelection > 0 && toppSelection <10) 
{ 
    toppAmount[i] = toppAmount[i]++ 
} 

不包括錯誤語句。

我把它放在一個while循環中,這樣每次它增加時,澆頭名稱和量數組都會被再次寫出,因此它會刷新,但值不會增加。他們保持不變。

對不起,如果這是非常明顯的,但我現在失去了耐心,我寧願找出如何做到這一點,而不是爲每個數組的值作出噸的聲明。

在此先感謝

+1

我認爲你需要發佈你的實際代碼,並可能是一個更簡潔的問題。問題似乎是你的'toppAmount [i]'沒有被更新,但它看起來像是這樣,所以這個bug很可能在其他地方。 – 2011-04-05 12:41:58

+0

確定它已被定義。它只是增加1 toppAmount [i] – Erix 2011-04-05 12:47:07

+1

@丹:這是不正確的,看到馬克的答案。 – 2011-04-05 12:49:08

回答

4

只需使用toppAmount[i]++;代替toppAmount[i] = toppAmount[i]++;。有關說明,請參閱馬克的答案,或者在這裏:what value will have property of my object?

+0

不知道如果現有的代碼已經不能工作,他會解決他的問題。 – 2011-04-05 12:46:09

+1

@Dan:完全是另一回事,因爲他的隊伍總是壓倒舊隊員增加的價值。關於爲什麼,請參閱Marc的解釋。 – 2011-04-05 12:48:37

1

讓我們考慮行:

toppAmount[i] = toppAmount[i]++; 

這樣的:

  • 讀取toppAmount[i]的價值,因爲它是後增量的「價值」在這裏是
  • 個增量toppAmount[i]
  • 分配toppAmount[i],解開所有的工作

你只是想:

toppAmount[i]++; 
+0

沒有區別,它仍然不會增加..啊。也許之前有什麼問題?我會盡快從我的筆記本電腦上覆制代碼,但我希望能夠避開它。大學網非常慢,除非你在電腦實驗室使用桌面。 – Gavin 2011-04-05 12:52:30

+1

有趣!在C++中,你會得到遞增的值('i = i ++'* does * increment'i')。你每天都會學到新東西;-)我認爲這是C++考慮賦值作爲表達式的副作用。 – 2011-04-05 13:02:41

+0

@丹 - 你確定這實際上是一個定義的行爲?在C#中,* *被定義(並導致原始值),但如果不是嚴格定義在C++中,我不會感到驚訝。 – 2011-04-05 13:04:04

0
static void ToppingMenu() 
{ 
    int toppSelection = 0; 
    while (toppSelection != 999) 
    { 
     Console.Clear(); 
     Console.WriteLine("Create Pizza Menu"); 

     string[] toppName = new string[10] { "Cheese ", "Tomato ", "Mushrooms ", "Green Pepper ", "Black Olives ", "Onions ", "Pepperoni ", "Chicken ", "Tuna ", "End Custom Pizza Creation - Previous Menu" }; 
     int[] toppAmount = new int[9] { 1, 1, 0, 0, 0, 0, 0, 0, 0 }; 

     Console.WriteLine("{0}     {1}", toppName[0], toppAmount[0]); //Cheese 
     Console.WriteLine("{0}     {1}", toppName[1], toppAmount[1]); //Tomato 
     Console.WriteLine("{0}    {1}", toppName[2], toppAmount[2]);  //Mushrooms 
     Console.WriteLine("{0}    {1}", toppName[3], toppAmount[3]);   //Green Pepper 
     Console.WriteLine("{0}    {1}", toppName[4], toppAmount[4]);   //Black Olives 
     Console.WriteLine("{0}     {1}", toppName[5], toppAmount[5]); //Onions 
     Console.WriteLine("{0}    {1}", toppName[6], toppAmount[6]);  //Pepperonni 
     Console.WriteLine("{0}     {1}", toppName[7], toppAmount[7]);  //Chicken 
     Console.WriteLine("{0}      {1}", toppName[8], toppAmount[8]); //Tuna 
     Console.WriteLine("\n\n\n{0}   ", toppName[9]);      //Exit to previous menu option 

     Console.WriteLine("\n\nTo finish order, please enter '999'"); 
     Console.Write("\n\nSelection: "); 

     toppSelection = int.Parse(Console.ReadLine()); 
     int i = toppSelection - 1;         //i is assigned same value as number entered -1, 
                    //i-1 fixes the 1-off fault, where 0 = first topping in array but 1 = first topping by user entry 
     if (toppAmount[i] > 2)     // 
     { 
      Console.Write("Error, invalid amount"); 
     } 
     else if (toppSelection > 0 && toppSelection < 10) 
     { 
      toppAmount[i]++; 
     } 

搞到現在我所有的其他方法,這樣做我已經回來了。我期待着我犯了一個令人尷尬的基本錯誤(或者很多!),但是在這裏,對不起,在晚上很抱歉。我的一些編碼看起來可能有點原始,但這是我們今年所教的內容。沒有意義用我還沒有涉及的東西來替換東西,所以如果只是擔心我想增加的值的邏輯/語法=]

toppName =指定澆頭陣列 toppAmount =澆頭值數組,兩個從1開始,因爲他們是默認選擇

toppSelection =用戶輸入並定義了餡料再次選擇

感謝您的幫助球員,抱歉打擾你。

+0

解決了這個問題。我剛剛將量數組更改爲全局變量,並開始增量。每次調用方法時,都必須重置值。 感謝您的幫助,無論傢伙=] – Gavin 2011-04-06 03:02:56