2014-02-18 22 views
0

所以我應該做一個返回值的方法,設置變量爲零:C#方法時,它不應該

private decimal ReadInputThree() 
{ 
    Console.WriteLine("Ange valuta kursen:"); 
    decimal CurrencyValue = decimal.Parse(Console.ReadLine()); 
    return CurrencyValue; 
} 

,然後用另一種方法使用CurrencyValue:

if (done == true) 
{ 
    ReadInputTwo(); 
    ReadInputThree(); 
    Sum = Sum/CurrencyValue; 
    Console.WriteLine("Värdet av valutan {0} är {1}", CurrencyName, CurrencyValue); 
} 

但是當我運行它時,它告訴我它可以將Sum與CurrencyValue分開,因爲CurrencyValue設置爲0.但是,怎麼可能呢?它應該是用戶告訴它的任何內容?我甚至在if語句中的ReadInputThree後面寫了一個WriteLine語句,以確定它是否會打印輸入字符串,並且它已經完成了。

回答

4

問題:你甚至不調用ReadInputThree()功能後拿着CurrenceyValue變量stillbe零的ReadInputThree() function.so值的返回值。

解決方案:您需要將ReadInputThree()函數的返回值保存到CurrencyValue變量

試試這個:

CurrencyValue = ReadInputThree(); 
Sum = Sum/CurrencyValue; 
+0

但我已經這樣做了? CurrencyValue已經是我之前聲明的一個實例變量。 – Baxtex

+0

@Baxtex:然後只是給它賦值,而沒有聲明它。看到我編輯的答案 –

+0

@ Selman22:是的,我剛創建並賦值,因爲我沒有看到他在他的代碼中聲明變量的任何地方:) –

1

因爲你不分配的ReadInputThreeCurrencyValue結果:

if (done == true) 
{ 
    ReadInputTwo(); 
    CurrencyValue = ReadInputThree(); 
    Sum = Sum/CurrencyValue; 
    Console.WriteLine("Värdet av valutan {0} är {1}", CurrencyName, CurrencyValue); 
} 
0

獲取返回值從方法。同時檢查有效輸入併除以零例外。

private decimal ReadInputThree() 
{ 
    Console.WriteLine("Ange valuta kursen:"); 
    string userValue = Console.ReadLine(); 
    decimal CurrencyValue = 0; 
    decimal.TryParse(userValue, out CurrencyValue); 
    return CurrencyValue; 
} 

if (done == true) 
{ 
    ReadInputTwo(); 
    decimal CurrencyValue = ReadInputThree(); 
    if (CurrencyValue != 0) 
    { 
     Sum = Sum/CurrencyValue; 
    } 
    else 
    { 
     Sum = 0; 
    } 


Console.WriteLine("Värdet av valutan {0} är {1}", CurrencyName, CurrencyValue); 
}