我有一个字符串(stringMess),我在字符串中保存反应时间(需要多长时间点击按钮)。现在我想在标签输出中获得最快和最短的时间,所以我必须对字符串进行排序。但我怎么能这样做? (我所做的一切,直到给我一个错误:()
public partial class Form1 : Form
{
//...
int Zeit = 0;
string Mess;
int Anzahl;
//...
private void btnRot_Click(object sender, EventArgs e)
{
// a timer starts and when you click on the button,
// the timer stops and write the time in the stringMess
Mess = Mess + Zeit + " , ";
Anzahl = Anzahl + 1;
//...
}
代码不是整个代码......
答案 0 :(得分:2)
通过使用字符串(以及单个字符串),您只是使问题变得更加困难。使用List
TimeSpan
。像这样:
List<TimeSpan> reactionTimes = new List<TimeSpan>;
现在,当你启动计时器时,你可以这样做:
startTime = DateTime.Now;
当你停下来的时候:
reactionTimes.Add(DateTime.Now - startTime); // Note: subtracting two DateTimes results in a TimeSpan
你可以轻松地对它们进行排序:
reactionTimes.Sort();
只有在想要将它们显示给用户时才将它们转换为字符串。这非常简单,具体取决于您希望它们显示的方式(毫秒?秒?周?年?),因为TimeSpan
有一个采用格式字符串的.ToString
方法。参见:
http://msdn.microsoft.com/en-us/library/dd992632.aspx
以及TotalMilliseconds
,TotalSeconds
等属性double
,可以根据需要进行格式化。
你甚至可以做(未经测试的代码):
string myString = string.Join(",",
reactionTimes.Select(x => x.TotalMilliseconds.ToString()).ToArray());
答案 1 :(得分:0)
这听起来像你想要的,而不是一个字符串,是一个int(数组,列表,等等)的集合。如果你绝对必须有一个字符串(家庭作业?真的,非常奇怪的要求吗?)你需要拆分字符串。
第一个看起来像这样:
int Zeit = 0;
List<int> Mess = new List<int>();
int Anzahl;
然后你的按钮会这样做:
private void btnRot_Click(object sender, EventArgs e)
{
//your other stuff here
Mess.Add(Zeit);
Anzahl++;
}
然后你会得到这样的最大和最小值:
var biggestZeit = Mess.Max();
var littlestZeit = Mess.Min();
如果你必须使用字符串,你仍然可以通过这样做得到整数的数组(或列表):
var resultList = Mess.Split(',').ToList();
var biggestZeit = resultList.Max(s => int.Parse(s));
var littlestZeit = resultList.Min(s => int.Parse(s));
Matt指出 - 您可以使用TimeSpan
。