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