每次选择C#数组时都加“1”?

时间:2011-04-05 12:37:47

标签: c# arrays

对不起,我对此有点兴趣,我错过了大部分的阵列讲座,所以我不得不依靠谷歌赶上,因为我需要将它们实现到这个任务中。

所以我有两个数组,一个用于显示名称(比萨饼的浇头),另一个用于指定每个浇头的值(每个浇头最多只能有三个,如单个,双个或三个顶部起司)。可能有一种方法可以将它保持为一个数组,但我不确定是否为字符串赋值,除非转换有效。我只做了一次,所以我不确定它。

无论如何,我想要制作一个简单的声明,以满足所有这些,并用整数替换数组值,而不是列出所有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循环中,这样每次递增时,顶部名称和数量数组都会被再次写出,所以它会刷新,但值不会增加。他们保持不变。

很抱歉,如果这非常明显,但我现在已经失去了对此的耐心,我宁愿找出正确的方法,而不是为数组的每个值制作大量的语句。

提前致谢

3 个答案:

答案 0 :(得分:4)

只需使用toppAmount[i]++;代替toppAmount[i] = toppAmount[i]++;。有关解释,请参阅Marc的答案或此处:what value will have property of my object?

答案 1 :(得分:1)

让我们考虑一下:

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

这样:

  • 读取toppAmount[i]的值,因为它是后增量,此处的“值”是 值< / LI>
  • 增加toppAmount[i]
  • 值分配给toppAmount[i],撤消所有工作

你只想:

toppAmount[i]++;

答案 2 :(得分: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 =顶部值数组,两个从一开始,因为它们是默认选择

toppSelection =用户输入并定义选择了哪个顶点

再次感谢帮助人员,抱歉给您带来麻烦。