我是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();
}
}
}
}
}
答案 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。将您的getsales
和calcComm
更改为如下所示:
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中声明它们,但在任何方法之外,然后确保没有其他方法具有相同名称的变量