2016-04-04 15 views
2

So habe ich einige Arbeitscode für die Ausgabe von doppelten Werten in einem Array, aber es ist immer ein kurzer, wenn es sie auf dem Bildschirm ausgibt und ich weiß, dass es mit dem zu tun hat folgenden Code, aber ich kann es nicht genau sagen. Bitte beachten Sie, dass ich keine System.Array verwenden kann.Doppelte Werte in einem Array finden und alle ausgeben

for (column = 0; column < WinningScores.Length -1 ; column++) 
{ 
    if (WinningScores[column] == WinningScores[column + 1]) 
    { 
     duplicateScore = WinningScores[column]; 
     duplicateIndex = column; 
     Console.Write("\n Competitor {0} is the Winner with a total of: {1}", 
         duplicateIndex + 1, 
         duplicateScore - totalSum); 
    } 
} 
+1

Hey! Können Sie uns bitte für einige Beispielwerte sagen, was ist die Ausgabe, die Sie erhalten und was erwartet wird? Es wäre einfacher für uns, das Problem zu verstehen. –

+0

Wenn es immer eine kurze ist es etwas mit WinningScores.Length -1 zu tun ... sollte es nur WinningScores.Length sein? –

+0

wie es fehlt der letzte Wert des Array "WinningScores" – diam

Antwort

3

könnten Sie versuchen, mithilfe von LINQ für diese:

double[] WinningScores = new double[] { 4, 5, 3, 5 }; 

var duplicates = 
    WinningScores 
     .Select((score, index) => new { score, player = index + 1}) 
     .GroupBy(x => x.score, x => x.player) 
     .Where(gxs => gxs.Count() > 1); 

, dass mir dieses Ergebnis gibt:

result

Sie können sehen, dass es die doppelte Punktzahl von 5 nahm mit Spieler 2 & 4.

+0

Ich frage mich, ob OP "System.Array" nicht verwenden kann, ob linq in die gleiche Kategorie fallen könnte. – spender

+0

@spender - wahrscheinlich, aber er war nicht klar darüber oder warum er 'System.Array' nicht verwenden konnte. Es ist immer noch eine nette Antwort und SO ist für die Gemeinschaft, nicht nur das OP. – Enigmativity

1

Ihr Code sucht nach Duplizierung in konsekutiven Werten. Probieren Sie diesen Code aus, um doppelte Werte in einem Array auszugeben.

for (column = 0; column < WinningScores.Length -1 ; column++) 
    { 

     for (int cl= column + 1 ; cl < WinningScores.Length - 1 ; cl++) 
      { 
       if (WinningScores[column] == WinningScores[cl]) { 


         duplicateScore = WinningScores[column]; 
         duplicateIndex = column; 
         Console.Write("\n Competitor {0} is the Winner with a total of: {1}", duplicateIndex + 1, duplicateScore - totalSum); 
       } 
      } 
     } 
0
//Starts loop through first element 
for(int i = 0; i < arr.length, i++) 

//starts at second element in array 
for(int j = i + 1; k < arr.length, j++) 

//double check my logic though, in a hurry at work so had to post this in a rush. 
Verwandte Themen