2014-03-30 64 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分成兩倍,那麼分割後得到的數字將是雙倍的,即包含小數部分,這將給出正確的答案 –

相關問題