2014-01-17 124 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