0

すべての迅速な対応に感謝します。それらはすべて本当に役に立ちました。

こんにちは、C# と厳密に型指定された言語は初めてです。

DispenseCash 現金メソッドでパラメーターとして使用できるように、WithdrawAmount メソッドから int 金額を返そうとしています。「名前 'amount' は現在のコンテキストに存在しません」というエラーが表示されます。

私は何を間違っているのでしょうか。問題がなければ、問題の詳細についてオンライン リソースを参照していただけますか。ありがとう :)。

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
4

6 に答える 6

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);

true無効であったかどうかを返すよりも、現金の支払いが成功した場合に戻る方が理にかなっているため、ロジックを逆にしたことに注意してください。

于 2013-08-30T05:23:49.860 に答える
0

実際には非常に簡単です:

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

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

戻り値がある場合、それを他の関数 (実際にはプログラムの残りの部分) に認識させたい場合は、それをどこかに格納する必要があります。優れたリソースに関しては、これらに従うことで間違いはありません。

于 2013-08-30T05:26:44.683 に答える
0

これを試して

do
{
    int amount = WithdrawAmount(whichAccount);

     DispenseCash(amount, whichAccount, invalidAmount);
} while (invalidAmount == true);
于 2013-08-30T05:27:00.350 に答える
0

intWithdrawAmount(whichAccount)返されるため、新しい変数を割り当てて値を設定する必要はありません。代わりに、これを試すことができます

 DispenseCash(WithdrawAmount(whichAccount), whichAccount, invalidAmount);
于 2013-08-30T05:25:31.827 に答える
0

あなたの引き出し額方法は問題ありません。

この行はエラーになりますが

DispenseCash(amount, whichAccount, invalidAmount);

amountコードのどこにも宣言していないためです。

メソッドから金額を返したいので、withdrawamountdispens cash メソッドを呼び出します。したがって、基本的に必要なのはこれです。

int amount =WithdrawAmount(whichAccount);
DispenseCash(amount, whichAccount, invalidAmount);
于 2013-08-30T05:23:38.493 に答える
0

WithdrawAmount への呼び出しの戻り値を変数に割り当てる必要があります。

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

     DispenseCash(amount, whichAccount, invalidAmount);
} while (invalidAmount == true);
于 2013-08-30T05:30:55.723 に答える