2016-09-25 2 views
1

Ich versuche herauszufinden, die effizienteste Möglichkeit, ersten, zweiten und dritten Platz für ein einfaches C# -Programm zu berechnen, in dem der Zweck ist, den Gewinner zu finden, 2. Platz, und 3. Platz und zeigen ihre Namen entsprechend, aber mein Code scheint zu groß für solch eine einfache Aufgabe. Ich bin neu und ich benutze If-Anweisungen, um die erforderliche Berechnung zu vervollständigen, aber ich weiß, dass es einen besseren Weg gibt. Kann mich jemand aufklären?Vergleichen und berechnen ersten, zweiten und dritten Platz

Hier ist mein aktueller Code und wo ich aufgehört habe, nachdem ich die Menge eines Codes erkannt habe, den das nehmen wird.

private void calculateButton_Click(object sender, EventArgs e) 
    { 
     // Define Name and Time Variables 
     string runnerone = runnerOneNameTextBox.Text;      // Runner One Name 
     string runnertwo = runnerTwoNameTextBox.Text;      // Runner Two Name 
     string runnerthree = runnerThreeNameTextBox.Text;     // Runner Three Name 
     double runnerOneTime = double.Parse(runnerOneTimeTextBox.Text);  // Runner One Time 
     double runnerTwoTime = double.Parse(runnerTwoTimeTextBox.Text);  // Runner Two Time 
     double runnerThreeTime = double.Parse(runnerThreeTimeTextBox.Text); // Runner Three Time 

     //------------------------------------------------------------------------- 
     // Start of the If statement to calculate who is first, second, and third. 
     //------------------------------------------------------------------------- 

     // FIRST PLACE CODE: 
     if (runnerOneTime > runnerTwoTime && runnerOneTime > runnerThreeTime) // Runner One is greater than everyone 
     { 
      firstPlaceLabel.Text = runnerOneNameTextBox.Text; 
      firstPlaceTrophyLabel.Text = runnerOneNameTextBox.Text; 
     } 
     else if (runnerOneTime == runnerTwoTime && runnerOneTime > runnerThreeTime) // Runner one is equal to runner two 
     { 
      firstPlaceLabel.Text = runnerOneNameTextBox.Text; 
      firstPlaceLabel.Text = runnerTwoNameTextBox.Text; 
      firstPlaceTrophyLabel.Text = runnerOneNameTextBox.Text; 
      firstPlaceTrophyLabel.Text = runnerTwoNameTextBox.Text; 
     } 
     else if (runnerOneTime > runnerTwoTime && runnerOneTime == runnerThreeTime) 
    } 
} 

}

Antwort

0

Sie haben eine Liste von drei Läufern, so lassen Sie die .NET-Liste Sortierfunktionalität zu Ihrer Rettung kommen:

private class RunnersAndTimes 
{ 
    public string Name {get}; 
    public double Time {get}; 

    public RunnersAndTimes(string name, double time) 
    { 
     Time = time; 
     Name = name; 
    } 
} 
... 
private void calculateButton_Click(object sender, EventArgs e) 
{ 
    var runnersAndTimes = new List<RunnersAndTimes> { 
     new RunnersAndTimes(runnerOneNameTextBox.Text, 
          double.Parse(runnerOneTimeTextBox.Text)), 
     new RunnersAndTimes(runnerTwoNameTextBox.Text, 
          double.Parse(runnerTwoTimeTextBox.Text)), 
     new RunnersAndTimes(runnerThreeNameTextBox.Text, 
          double.Parse(runnerThreeTimeTextBox.Text)) 
    }; 

    var orderedRunners = runnersAndTimes.OrderBy(runner => runner.Time).ToList(); 

    firstPlaceLabel.Text = orderedRunners[0]; 
    secondPlaceLabel.Text = orderedRunners[1]; 
    thirdPlaceLabel.Text = orderedRunners[2]; 
} 
+1

Danke. Dies ist ein bisschen aus meinem Wissen, das ich gerade jetzt gemacht habe, aber ich werde den Mist daraus lernen und es zum Laufen bringen. Vielen Dank! –

Verwandte Themen