如何在控制台应用程序中解析用户输入到int

时间:2014-03-30 12:49:09

标签: c# input int

我想创建一个C#应用程序,输入上周销售的一个销售人员的项目,并计算并显示该销售人员的收入。销售人员每周收到200美元,加上该周总销售额的9%。提供了每个销售人员销售的商品列表及其值后,如何将用户输入转换为int?其他一切都很好。

double value1, value2, value3, value4;

value1 = 239.99;
value2 = 129.75;
value3 = 99.95;
value4 = 350.89;

Console.Write("Enter number sold of product #1: ");
int item1 = Convert.ToInt32(Console.ReadLine());

Console.Write("Enter number sold of product #2: ");
int item2 = Convert.ToInt32(Console.ReadLine());

Console.Write("Enter number sold of product #3: ");
int item3 = Convert.ToInt32(Console.ReadLine());

Console.Write("Enter number sold of product #4: ");
int item4 = Convert.ToInt32(Console.ReadLine());

double sales1, sales2, sales3, sales4, totalSales;

sales1 = item1 * value1;
sales2 = item2 * value2;
sales3 = item3 * value3;
sales4 = item4 * value4;

totalSales = sales1 + sales2 + sales3 + sales4;

double commission;
int weeklyPay = 200;

commission = (9/100) * totalSales;

double salary;

salary = commission + weeklyPay;

Console.Write("Earnings this week: " + salary);

Console.ReadLine();

3 个答案:

答案 0 :(得分:0)

Earnings this week将始终返回200。这不是因为没有读取用户输入(请参阅jih的答案,以获得将字符串解析为int的更健壮的方法),但是由于存在错误:

commission = (9/100) * totalSales;

问题是你正在做integer division

尝试

commission = 0.09 * totalSales;

commission = 9.0/100.0 * totalSales;

9/100周围的括号是多余的,但如果它们提高了可读性,则可以。

答案 1 :(得分:0)

虽然您的方法初看起来似乎是正确的,但您应该以非烦恼的方式将字符串转换为简单的数据类型。

检查这个(相当详细的)代码:

string userInput = Console.ReadLine();
int parsedValue;
if(!Int32.TryParse(userInput, out parsedValue))
{
    // Decide what to do here, parsing failed!
}
else
{
    // String format from user was valid and parsed value is in parsedValue variable.
}

如果您对更详细地说明为什么这是更好的编码感兴趣,请查看Eric Lippert关于Vexing Exceptions的文章。

答案 2 :(得分:0)

试试这个

  

佣金=((双倍)9/100)* totalSales;