2014-03-30 36 views
0

我想创建一个C#应用程序,输入上周销售的一个销售人员的物品,并计算并显示该销售人员的收入。销售人员每周收到200美元,加上当周总销售额的9%。提供了每个销售人员销售的物品列表及其值,我如何将用户输入转换为int?其他一切正常。如何在控制台应用程序中将用户输入解析为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(); 
+0

'Convert.ToInt32(Console.ReadLine())'将起作用。或'int.Parse(Console.ReadLine())'较短。 –

+0

似乎一切正常,你有任何错误? –

回答

0

Earnings this week将始终返回200。这并不是因为用户输入不被读取(见钜的解析字符串为int的更可靠的方法回答),而是因为一个错误:

commission = (9/100) * totalSales; 

的问题是,你正在做integer division

尝试

commission = 0.09 * totalSales; 

commission = 9.0/100.0 * totalSales; 

各地9/100括号是多余的,但都OK,如果他们提高可读性。

+0

是的,谢谢你修正它! – user3478032

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. 
} 

如果您有兴趣的为什么这是更好的编码更详细的论证,检查埃里克利珀文章关于Vexing Exceptions

+0

OP的输入解析没问题,OP有一个整数除法错误。看到我的答案。 –

+0

我解决了我认为关于题目和问题的代码不好的问题。我想你正在解决他最终提出的动机是什么。 – jsign

0

试试这个

佣金=((双)100分之9)* totalSales;

+0

解释**为什么**会解决问题更为有用... – Krease

+0

以及9/100的结果为0.09,因为9和100都是整数,所以结果将作为整数变成0 ,小数部分被忽略。这就是为什么在OP的情况下委员会一直为零。如果我们把9分成两倍,那么分割后得到的数字将是双倍的,即包含小数部分,这将给出正确的答案 –

相关问题