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

您可能打算在控制台上显示佣金。改变你的getsalesandcalcComm看起来像这样:

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

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

你应该移动这个:

    double total = 0; 

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

class Program    
{        
    static double total;

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

于 2012-05-07T23:29:41.887 回答
0

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

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

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

于 2012-05-07T23:31:34.047 回答