Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的函数-如何将整数值转换为函数?_C#_Function_Integer - Fatal编程技术网

C#中的函数-如何将整数值转换为函数?

C#中的函数-如何将整数值转换为函数?,c#,function,integer,C#,Function,Integer,基本上,我试图把一个整数值输入到一个函数中,我正在为一台自动售货机制作一个简单的程序,在这个程序中,我可以选择“检查机器”来计算机器中的薯片数量,基本上,我遇到的问题是,当我看到机器中实际有多少薯片时,它说数量是0。。我该如何解决这个问题,使我能够实际查看机器中当前有多少薯片 以下是我目前的代码: static void Main(string[] args) { //Declare variables int iOption = 0; //used to store users m

基本上,我试图把一个整数值输入到一个函数中,我正在为一台自动售货机制作一个简单的程序,在这个程序中,我可以选择“检查机器”来计算机器中的薯片数量,基本上,我遇到的问题是,当我看到机器中实际有多少薯片时,它说数量是0。。我该如何解决这个问题,使我能够实际查看机器中当前有多少薯片

以下是我目前的代码:

static void Main(string[] args)
{
   //Declare variables
   int iOption = 0; //used to store users menu option
   int iFillCrisps = 0; //used to store the amount of crisps the user wants to add to the machine
   int iBuyCrisps = 0; //used to store the amount of crisps the user wants to buy
   int iTotalNumCrisps = 0; //used to show the total number of crisps in the machine

   //Menu
   while (iOption != 4) //Program continously loops until user types "4" which is the exit key
   {
      GetMenuOption(iOption);
      iOption = Convert.ToInt32(Console.ReadLine());

      //Process menu
      if (iOption == 1)
      {
         FillCrisps(iFillCrisps, iTotalNumCrisps);
      }

      else if (iOption == 2)
      {
         BuyCrisps(iBuyCrisps, iTotalNumCrisps);
      }

      else if (iOption == 3)
      {
         InspectMachine(ref iTotalNumCrisps);
      }

      else if (iOption == 4)
      {
         Console.WriteLine("Exit");
      }
   }
}

static int GetMenuOption(int piOption)
{
   Console.WriteLine("Vending machine");
   Console.WriteLine();
   Console.WriteLine("Please choose an option");
   Console.WriteLine("1: Fill machine with crisps");
   Console.WriteLine("2: Buy Crisps");
   Console.WriteLine("3: Inspect Machine");
   Console.WriteLine("4: Exit");

   return piOption;
}

static int FillCrisps(int piFillCrisps, int piTotalNumCrisps)
{
   Console.WriteLine("Fill machine with crisps");
   Console.WriteLine("How many crisps would you like to add to the machine?");
   piFillCrisps = Convert.ToInt32(Console.ReadLine());
   piTotalNumCrisps = piFillCrisps + piTotalNumCrisps;
   Console.WriteLine("You are adding " + piFillCrisps + " packs of crisps to them machine");
   Console.WriteLine("There are now " + piTotalNumCrisps + " packs of crisps in the machine");

   return piTotalNumCrisps;
}

static int BuyCrisps(int piBuyCrisps, int piTotalNumCrisps)
{
   Console.WriteLine("Buy Crisps");
   Console.WriteLine("How many crisps would you like to buy?");
   piBuyCrisps = Convert.ToInt32(Console.ReadLine());
   piTotalNumCrisps = piTotalNumCrisps - piBuyCrisps;
   Console.WriteLine("You are buying " + piBuyCrisps + " crisps");
   Console.WriteLine("There are now " + piTotalNumCrisps + " packs of crisps in the machine");

   return piTotalNumCrisps;
}

static void InspectMachine(ref int piTotalNumCrisps) //Needs a way of retrieving the total value into it
{
   Console.WriteLine("Inspect Machine");
   Console.WriteLine("There are currently " + piTotalNumCrisps + " crisps in the machine.");
}

嗯,你看,通常情况下,如果你是一个店主,你会先计算你需要给客户多少零钱,然后再给他零钱。而不是相反

所以,更改代码

    GetMenuOption(iOption);
    iOption = Convert.ToInt32(Console.ReadLine());

然后再试一次

另外,另一个函数只是从外部获取参数。他们正在做一些事情,但他们没有给予任何回报。例如,此功能:

static int FillCrisps(int piFillCrisps, int piTotalNumCrisps)
static void InspectMachine(ref int piTotalNumCrisps)
         //Needs a way of retrieving the total value into it
尝试更改计数器,但由于它仅从外部“读取”参数,因此它计算的任何内容在外部变量处都不可见。试着把它改成

static int FillCrisps(ref int piFillCrisps, ref int piTotalNumCrisps)
并调整代码的其余部分。现在,外部变量中的更改也将可见

另一方面,此功能:

static int FillCrisps(int piFillCrisps, int piTotalNumCrisps)
static void InspectMachine(ref int piTotalNumCrisps)
         //Needs a way of retrieving the total value into it
仅读取和打印值。这并没有改变他们。这里根本不需要
ref
。将其更改回:

static void InspectMachine(int piTotalNumCrisps)
这样就可以了(只要你也纠正了其他函数!)

因此,您的函数应具有以下签名:

// functions that don't change the data
static int GetMenuOption(int piOption)
static void InspectMachine(int piTotalNumCrisps)

// functions that DO change the data
static int FillCrisps(ref int piFillCrisps, ref int piTotalNumCrisps)
static int BuyCrisps(ref int piBuyCrisps, ref int piTotalNumCrisps)

嗯,你看,通常情况下,如果你是一个店主,你会先计算你需要给客户多少零钱,然后再给他零钱。而不是相反

所以,更改代码

    GetMenuOption(iOption);
    iOption = Convert.ToInt32(Console.ReadLine());

然后再试一次

另外,另一个函数只是从外部获取参数。他们正在做一些事情,但他们没有给予任何回报。例如,此功能:

static int FillCrisps(int piFillCrisps, int piTotalNumCrisps)
static void InspectMachine(ref int piTotalNumCrisps)
         //Needs a way of retrieving the total value into it
尝试更改计数器,但由于它仅从外部“读取”参数,因此它计算的任何内容在外部变量处都不可见。试着把它改成

static int FillCrisps(ref int piFillCrisps, ref int piTotalNumCrisps)
并调整代码的其余部分。现在,外部变量中的更改也将可见

另一方面,此功能:

static int FillCrisps(int piFillCrisps, int piTotalNumCrisps)
static void InspectMachine(ref int piTotalNumCrisps)
         //Needs a way of retrieving the total value into it
仅读取和打印值。这并没有改变他们。这里根本不需要
ref
。将其更改回:

static void InspectMachine(int piTotalNumCrisps)
这样就可以了(只要你也纠正了其他函数!)

因此,您的函数应具有以下签名:

// functions that don't change the data
static int GetMenuOption(int piOption)
static void InspectMachine(int piTotalNumCrisps)

// functions that DO change the data
static int FillCrisps(ref int piFillCrisps, ref int piTotalNumCrisps)
static int BuyCrisps(ref int piBuyCrisps, ref int piTotalNumCrisps)

有一种比上面提到的方法简单得多的方法,您只需在即将发生的实际函数之前添加“iTotalNumCrisps=”。。例如:

            if (iOption == 1)
              {
                iTotalNumCrisps = FillCrisps(iFillCrisps, iTotalNumCrisps);
              }

有一种比上面提到的方法简单得多的方法,您只需在即将发生的实际函数之前添加“iTotalNumCrisps=”。。例如:

            if (iOption == 1)
              {
                iTotalNumCrisps = FillCrisps(iFillCrisps, iTotalNumCrisps);
              }

你没有对你的方法的结果做任何事情;e、 g.调用
FillCrisps
可能应该是
iTotalNumCrisps=FillCrisps(iFillCrisps,iTotalNumCrisps)
。您没有对方法的结果做任何事情;e、 g.调用
FillCrisps
可能应该是
iTotalNumCrisps=FillCrisps(iFillCrisps,iTotalNumCrisps)
+.5,因为它能如此迅速地找到答案,尽管标题很糟糕,+.5是阿兹特克神。:)非常感谢。正是我所寻找的,100%有效,我确实知道这个裁判,但正如你们看到的,我把他们搞糊涂了!愚蠢的我,谢谢你的帮助:)+.5感谢你这么快就找到了答案,尽管标题很烂,+.5感谢你是阿兹特克神。:)非常感谢。正是我所寻找的,100%有效,我确实知道这个裁判,但正如你们看到的,我把他们搞糊涂了!愚蠢的我,谢谢你的帮助:)谢谢,在上面的方法之前尝试过,效果很好,但是我更喜欢在我的代码中使用引用的想法,谢谢!是的,我想你是对的,我想C有很多不同的问题可能的答案,这两个答案都有效,只希望我能接受它们,在上面的方法之前尝试过,效果很好,但我更喜欢在代码中使用引用的想法,谢谢!是的,我想你是对的,我想C有很多不同的问题答案,这两个答案都有效,只希望我能同时接受它们