2014-01-17 173 views
0

我試圖做一個平均每分鐘死亡錯誤的速度。這是我的代碼現在,但它拋出一個錯誤,說字符串輸入格式是錯誤的。有什麼建議?我使用C#作爲WPF。平均速度wpf

//Score is the number of bugs hit 
score.Text = (_killings * 1).ToString(); 
//Change it to integer 
int x = Int32.Parse(score.Text); 
int y = Int32.Parse(TBCountdown.Text); - this is where the error is showing 
//Get the average speed by dividing number of bugs hit during the time 
int average = (x/y); 
//Displaying the average score by converting int to string 
averagescore.Text = average.ToString(); 

欲瞭解更多信息,我使用調度計時器,這是我的計時器的代碼。

TBCountdown.Text = string.Format("00:0{0}:0{1}", time/60, time % 60); 
+1

您如何期待將TBCountdown.Text轉換爲Integer,它看起來像格式化爲時間。您希望將該價值的哪一部分轉換爲您的y數據點? –

+0

只是分鐘和秒。 – user3098072

回答

0

有一對夫婦的事情,是你的代碼錯誤,我假設你是遞增的變量,並使用它來創建某種類型的經過時間。首先要說明的是,Ed S.是正確的,你不應該使用你的UI來存儲你的價值,創建一個支持變量並且使用它。至於你的問題:我想到的第一個想到我在我的評論中提到的是,你試圖將一個看起來像TimeSpan的字符串轉換爲一個整數,第二個是你的格式字符串不會轉換爲DateTime對象出現格式異常錯誤。我能夠通過將您的Timer的Tick事件處理程序更改爲此來獲取您的代碼。

DateTime temp = DateTime.Parse(string.Format("00:{0}:{1}", time/60, time % 60)); 
TBCountdown.Text = temp.ToString("00:mm:ss"); 

,你可以使用這樣的事情讓你的Y值(你沒有給我回應什麼信息,你想要的值

int y = (int)TimeSpan.Parse(TBCountdown.Text).TotalSeconds; 

有很多猜想這裏關於你想要什麼,如果這是不正確的,請讓我們知道。

+0

我只需要時間來獲得平均速度。例如,如果計時器在2分鐘停止。平均速度將從被殺害的bug和2分鐘中分開。對不起,在這裏混淆。 – user3098072

+0

我試過你的方法。它不再顯示錯誤,但我的平均速度仍未計算。 – user3098072

+0

@ user3098072。你得到什麼,在計算線上畫一個斷點,看看你的價值。我回答了什麼是錯的,不清楚你在做什麼。 –

-2
TBCountdown.Text = string.Format("00:0{0}:0{1}", (time/60).ToString(), (time % 60).ToString()); 

記住這是一個字符串函數

+1

這仍然會失敗。問題是試圖將其解析爲int。另外,參數被方法轉換爲字符串,你的'ToString()'調用是多餘的。它需要一個可變數量的'對象'的原因... –

0

這是你如何格式化文本框:

TBCountdown.Text = string.Format("00:0{0}:0{1}", time/60, time % 60); 

然後嘗試解析爲int。那麼,這不是一個整數。將其解析爲DateTime,或者更好的是,只使用您已擁有的變量(time)。總的來說,依靠你的UI存儲數據是一個不好的主意。 UI用於顯示。

int y = time; 
+0

你是複製/粘貼他失敗的代碼,並告訴他,這正是如何做到這一點? – user2930100

+2

@ user2930100:我假設你沒有打算閱讀代碼行下的段落。 –

+0

不,我沒有讀過它在我發表評論後添加的那個段落。 – user2930100