C#控制台应用程序 - 佣金计算器 - 如何在方法中使用方法

时间:2012-05-07 23:17:19

标签: c# methods console-application

我是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();

                   }


        }
    }
 }
}

3 个答案:

答案 0 :(得分: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();

您可能打算在控制台上显示commision。将您的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的所有来电。

答案 1 :(得分:0)

变量“total”在两种方法中,它们不会在您定义的两种方法之间保留您要查找的数据。也就是说,getSales()方法中的total变量与calcComm()方法不同。

你应该移动它:

    double total = 0; 

在两个方法之外,并将它放在具有静态范围的类中。像:

class Program    
{        
    static double total;

此外,在getSales()方法中将total重新初始化为零。

答案 2 :(得分:0)

calcComm()没有做任何事......

我认为您可能希望将某些变量设置为全局变量,这样如果它们被方法修改,您仍然可以检索它们的值,或者甚至更好地将它们传递给方法并使用新值返回它们。 / p>

要声明全局变量,您应该在类Program中声明它们,但在任何方法之外,然后确保没有其他方法具有相同名称的变量