2016-11-12 3 views
-1

Ich versuche, eine Hilfsmethode zu machen, die bei einer Zahl beginnt, startLook, inklusive und gibt die nächste Anzahl der Primzahlen von dieser Nummer zurück. Hier ist mein Code:Primzahl-Array von Nummer Java

public int[] nPrimes(int num, int startLook) { 
    int y = startLook; 
    int x = 2; 
    int[] c = new int[num]; 
    int d = 0; 
    while (x <= y/2) { 
     if (y % x == 0) { 
      x++; 
      continue; 
     } 
     if (y % x != 0) { 
      c[d]=y; 
      d++; 
     } 
     x++; 
    } 
    return c; 
} 

Dies führt zu ArrayIndexOutOfBoundsException und nicht die Registrierung Primzahlen. Was mache ich falsch? Danke im Voraus.

+0

könnten Sie bitte den Einzug verwenden? – Thrasher

+0

Sie sollten Ihren Code ein wenig aufspüren (drucken Sie einige Werte oder ähnliches aus) es gibt einige ernsthafte Probleme mit Ihrer Logik hier. Insbesondere ist nicht jede Zahl, die nicht durch ein gegebenes "x" teilbar ist, eine Primzahl. – CollinD

+0

Oh, also sollte ich das gleich schalten und ist nicht gleich? Danke, CollinD! Und danke, Fredrik! Das wusste ich nicht! –

Antwort

0

Sie erhalten ArrayIndexOutOfBoundsException Fehler, weil in Ihrer zweiten If-Anweisung d inkrementiert wird und Sie nie überprüfen, ob es Num-1 (letzte mögliche Index für Ihr c-Array) erreicht.

Sie sollten Ihre while-Schleife in etwas ändern, das den Wert d überprüft.