1

私は C# を初めて使用し、最近取り組んでいるコンソール アプリケーションでいくつかの問題に遭遇しました。私は3つの方法を試しています:

getsalesユーザーが行った販売を取得し、販売calcComに対する手数料を計算し、最終的mainにそれらを機能させてプログラムを確立します。

これらのメソッドを相互に連携させるのに苦労しています。

すべての売上を入力した後、プログラムは else ステートメントに移動し、「無効なエントリ」と通知します。変数を実際に出力できなかったので、どんな種類の出力も期待していませんでしたが、プログラムが各人のコミッションと売上をユーザーに伝えてほしいと思っています。

私がこの言語に慣れていないと言ったように、用語や言葉を誤用した場合はご容赦ください。:D

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication38
{
class Program
{

    public static void getsales ()
    {
        string inputsales;
        double total = 0;
        double sale = 0;

        for (int salecount = 1; salecount <= 3; ++salecount)
        {

            Console.WriteLine("Enter sale: ");
            inputsales = Console.ReadLine();
            sale = Convert.ToDouble(inputsales);
            total = total + sale;
            Console.WriteLine();
        }
    }

    public static void calcComm ()
    {
        double total = 0;
        double comm = 0;
        comm = total * 0.2;

    }


    static void Main()
    {
        Console.WriteLine("           Sunshine Hot Tubs \n        Sales Commissions Report\n");
        char Letter;
        string name;
        const string name1 = "Andreas";
        const string name2 = "Brittany";
        const string name3 = "Eric";
        string inputLetter;

        Console.WriteLine("Please enter intial or type z to quit");

        inputLetter = Console.ReadLine();
        Letter = Convert.ToChar(inputLetter);



        while (Letter != 'z')
        {

            if (Letter == 'a')
            {
                name = name1;
                getsales();
                calcComm();
            }
               if (Letter == 'b')
               {
                   name = name2;
                   getsales();
                   calcComm();
               }
                   if (Letter == 'e')
                   {
                       name = name3;
                       getsales();
                       calcComm();
                   }

                   else
                   {

                      Console.WriteLine("Invalid entry try again");
                      inputLetter = Console.ReadLine();

                   }


        }
    }
 }
}
4

3 に答える 3

3

あなたの問題は、これが必要だと思います:

if (Letter == 'a')
{
    name = name1;
    getsales();
    calcComm();
}
else if (Letter == 'b')
{
     name = name2;
     getsales();
     calcComm();
}
else if (Letter == 'e')
{
     name = name3;
     getsales();
     calcComm();
}
else
{

    Console.WriteLine("Invalid entry try again");
    inputLetter = Console.ReadLine();
}

また、ループelse blockの最後にある , の後にこのコードをコピーする必要があります。while

Console.WriteLine("Please enter intial or type z to quit");

inputLetter = Console.ReadLine();
Letter = Convert.ToChar(inputLetter);

また、else ブロック内からこの行を削除します。それは必要ありません。

inputLetter = Console.ReadLine();

おそらく、コミッションをコンソールに表示するつもりでした。getsalescalcCommを次のように変更します。

public static void getsales ()
{
    string inputsales;
    double total = 0;
    double sale = 0;

    for (int salecount = 1; salecount <= 3; ++salecount)
    {

        Console.WriteLine("Enter sale: ");
        inputsales = Console.ReadLine();
        sale = Convert.ToDouble(inputsales);
        total = total + sale;
        Console.WriteLine();
    }
    calcComm(total);
}

public static void calcComm (double total)
{
    double comm = 0;
    comm = total * 0.2;
    Console.WriteLine(comm);
}

calcComm次に、メソッドからのすべての呼び出しを削除しますMain

于 2012-05-07T23:25:05.633 に答える
0

calcComm()は何もしません...

変数の一部をグローバルとして設定して、メソッドによって変更された場合でも値を取得できるようにするか、メソッドに渡して新しい値を返すようにすることをお勧めします。

グローバル変数を宣言するには、クラスProgram内で、ただしメソッドの外で宣言する必要があります。次に、他のメソッドに同じ名前の変数がないことを確認してください。

于 2012-05-07T23:31:34.047 に答える
0

変数 "total" は 2 つのメソッドにあり、定義した 2 つのメソッド間で探しているデータを保持しません。つまり、getSales() メソッドの total 変数は calcComm() メソッドとは異なります。

これを移動する必要があります:

    double total = 0; 

2 つのメソッドの外に置き、静的スコープを持つクラス内に配置します。お気に入り:

class Program    
{        
    static double total;

また、getSales() メソッド内で合計をゼロに再初期化します。

于 2012-05-07T23:29:41.887 に答える