2013-08-30 111 views
0

感谢您的所有快速响应。他们都很有帮助。从一种方法返回int以在另一种方法中使用

大家好我是C#和强类型语言的新手。

我想从我的WithdrawAmount方法返回int数量,以便我可以在DispenseCash现金方法中使用它作为参数。我收到错误“名称数量”在当前上下文中不存在“。

我在做什么错,如果没有太多的麻烦,我可以指示在线资源了解更多的问题。谢谢 :)。

int whichAccount = int.Parse(Console.ReadLine()); 
do 
    { 
     WithdrawAmount(whichAccount); 

     DispenseCash(amount, whichAccount, invalidAmount); 
    } while (invalidAmount == true); 

// end of little example segment of Main 



static int WithdrawAmount(int whichAccount) 
    { 
     Console.Write("\nPlease enter how much you would like to withdraw: $"); 
     int amount = int.Parse(Console.ReadLine()); 
     return amount; 
    }//end WithdrawAmount 



private static bool DispenseCash(int amount, int whichAccount, bool invalidAmount) 
     { 
      int numOf20s; 
      int numOf50s; 

      if (amount % 20 == 0) 
      { 
       numOf20s = amount/20; 
       Console.WriteLine("Number of 20's = {0}", numOf20s); 
       accountBalances[whichAccount] = (accountBalances[whichAccount]) - amount; 
       return invalidAmount == false; 


      } 
      else if (amount % 50 == 0) 
      { 
       numOf50s = amount/50; 
       Console.WriteLine("Number of 50's = {0}", numOf50s); 
       return invalidAmount == false; 
      } 


      else if ((amount - 50) % 20 == 0) 
      { 
       numOf50s = 1; 
       numOf20s = (amount - 50)/20; 
       Console.WriteLine("Number of 20's = {0}", numOf20s); 
       Console.WriteLine("Number of 50's = {0}", numOf50s); 
       return invalidAmount == false; 
      } 

      else 
      { 
       Console.WriteLine("Invalid entry"); 
       return invalidAmount == true; 
      } 

     }//end DispenseCash 
+0

有什么用这条线INT whichAccount = int.Parse的(到Console.ReadLine()); – Kalyan

+0

这样用户可以选择他们想要退出的银行账户。 – user2281248

+0

好的。您正在将whichAccount传递给WithdrawAmount()方法。但是你没有使用该方法中的哪个帐户。 – Kalyan

回答

1

由于您尚未声明名为amount的变量,您将收到错误消息。

我相信你想声明一个变量amount并分配调用的返回值WithdrawAmount它:

int amount = WithdrawAmount(whichAccount); 

然后用它打电话DispenseCash

DispenseCash(amount, whichAccount, invalidAmount); 

请注意,您也可以直接执行此操作:

DispenseCash(WithdrawAmount(whichAccount), whichAccount, invalidAmount); 

此外,看你的代码,你很可能会处于无限循环,因为没有任何东西会改变invalidAmount的值。我相信不是将它作为参数传入DispenseCash并比较现有值,而是真的想从DispenseCash生成值并将其返回。因此有

invalidAmount = !DispenseCash(WithdrawAmount(whichAccount), whichAccount); 

注意我有相反的逻辑,因为它更有意义,从现金成功dispensement返回true,而不是回到它是否是无效或不。

+0

谢谢,你认为我应该在哪里分配它? – user2281248

+0

@ user2281248你在哪里调用它(在main?中)。也许你应该做一个关于“变量范围”的谷歌搜索。你可能会认为你已经有了一个名为“amount”的变量,但这只是在WithdrawAmount方法中。 –

+0

int amount = WithdrawAmount(whichAccount);作品。谢谢 – user2281248

0

您的提款方式没问题。

虽然这条线会为您提供错误

DispenseCash(amount, whichAccount, invalidAmount); 

因为你还没有宣布amount在你的代码的任何地方。

您想从withdrawamount方法中返回金额,然后调用点钞现金方法。所以,你基本需要的是这个。

int amount =WithdrawAmount(whichAccount); 
DispenseCash(amount, whichAccount, invalidAmount); 
0

因为你WithdrawAmount(whichAccount)回报INT没有必要分配一个新的变量和设定值给它,而不是你可以试试这个

DispenseCash(WithdrawAmount(whichAccount), whichAccount, invalidAmount); 
0

这是很简单的实际上是:

int whichAccount = int.Parse(Console.ReadLine()); 
do 
    { 
     int amount = WithdrawAmount(whichAccount); 

     DispenseCash(amount, whichAccount, invalidAmount); 
    } while (invalidAmount == true); 

看到,当你有一个返回值时,如果你希望它被其他函数所识别,那么你必须将它存储在某个地方(并且真的是这个程序的其余部分)。至于良好的资源,跟着these不能出错。

+0

谢谢你,我检查一下 – user2281248

0

试试这个

do 
{ 
    int amount = WithdrawAmount(whichAccount); 

    DispenseCash(amount, whichAccount, invalidAmount); 
} while (invalidAmount == true); 
0

你要调用的返回值赋给WithdrawAmount给一个变量:

int whichAccount = int.Parse(Console.ReadLine()); 
do 
{ 
    int amount=WithdrawAmount(whichAccount); 

    DispenseCash(amount, whichAccount, invalidAmount); 
} while (invalidAmount == true); 
相关问题