2016-05-03 12 views
0

Ich muss eine Schleife erstellen, um alle Primzahlen bis zu einer bestimmten Anzahl anzuzeigen. Die Nummer wird vom Benutzer selbst eingegeben. Daher möchte ich eine While-Schleife erstellen, um die Nachrichten anzuzeigen. Nur ich kann keinen Operator "<" zwischen einem Array und einem int verwenden.Verwenden Sie einen Operator zwischen einem Array und einem int

int[] Prime = {2, 3, 5, 7, 11}; 

    private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     int OutputPrime = 0; 
     while (Prime < biggestPrime) 
     { 

     } 
    } 

Das gibt mir die folgende Fehlermeldung an der währenden Linie: Operator ‚<‘ kann nicht auf Operanden vom Typ angewandt werden ‚int []‘ und ‚int‘

Jede Hilfe ist sehr geschätzt . Vielen Dank im Voraus!

+0

Zwei Worte, _operator overloading_ –

+3

@NullException Sie nicht einen Operator überlasten, die Sie vergleichen, um eine 'int' und eine' int [] 'lassen würde, noch würden Sie wollen, auch wenn Sie konnte, um dies zu erreichen, . – Servy

+0

sollten Sie Ihre 'int []' mit numerischem Index verwenden, etwa 'Prime [0] Ian

Antwort

1

Prime ist ein Array-Typ, die eine ganze Zahl hält, so dass Sie seinen Wert mit seiner Indexnummer zugreifen müssen, aber Sie versuchen Prime direkt zuzugreifen, die ein Array Sie nicht eine ganze Zahl so vergleichen mit Integer-Typ biggestPrime Exception werfen können erreichen wie folgt

int[] Prime = {2, 3, 5, 7, 11}; 

private void btnCalculate_Click(object sender, EventArgs e) 
    { 

     int OutputPrime = 0; 
     for (int i = 0; i < Prime.Length; i++) 
     { 
      if (Prime[i] < biggestPrime) 
      { 
       // do your stuff 
      } 
     } 
    } 
+0

sollte 'Prime [i]' –

+0

Dies ist eine * wirklich * schlechte Idee, wie Sie eine enorme Menge an unnötiger Arbeit in jeder Iteration eines bereits teure Operation tun. – Servy

+0

Warum würden Sie das Array im Event-Handler erneut initialisieren? –

1

Linq ist dein Freund.

foreach (var prime in primes.TakeWhile(i => i <= biggestPrime)) 
{ 
}