2011-04-05 60 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