Problem mit Java - Primzahlen Funktion

  • Guten Abend,


    ich hab folgende Fehlermeldung wenn ich meinen Code kompiliere:


    error: incompatible types: void cannot be converted to int


    Das habe ich gegooglet und herausgefunden, dass ich bei einer Methode die einen Wert übergibt auch den Wert deklaieren muss,
    soweit so gut. Das habe ich jedoch meiner Meinung nach korrekt getan.


    Ich hoffe jemand hat kurz die Zeit mir zu helfen und ich bedanke mich im Voraus für das Lesen!


    //EDIT: Die Funktion soll lediglich die Anzahl aller Primzahlen zwischen 2 gegebenen Zahlen ausgeben.


    Liebe Grüße,


    - SoulMan


    Das ist der Code:

  • Ups, sorry ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Primzahlen, sind Zahlen, die nur durch sich selbst und 1 teilbar sind.


    Also musst du leider wenn du wissen willst, ob N eine Primzahl ist erstmal checken, von 2-wurzel(n) ob da eine Zahl ist, mit der man N teilen kann.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Die gepostete Lösung wird auch nicht funktionieren...


    Deine Methode private static int prim(int zahl1, int zahl2) erwartet als Rückgabewert ein Integer (genauer den elementaren Datentyp int). Du versuchst aber z.B. System.out.println("Die Zahlen müssen mindestens 2 betragen!") zurückzugeben. println() gibt aber ein void zurück. ;)


    Bei falschen Eingaben kannst du entweder einen erwartungskonformen Wert (z.B. 0, oder -1 als Fehlercode) zurückgeben oder eine Exception werfen. Letzteres ist wohl für deinen aktuellen Wissensstand etwas weit gegriffen.

  • Wie fnL schon sagte, liefert die Methode System.out.println nichts zurück (void).


    Wenn du sowieso Fehler ausgeben willst, dann würde ich empfehlen, einfach Exceptions zu werfen.
    Diese könnte man dann im späteren Programmablauf fangen, und dann weiter verarbeiten.
    Und in deinem Fall tun sie, so wie es aussieht, genau das, was du tun willst.


    Java
    if(zahl1 < 2 || zahl2 < 2) throw new IllegalArgumentException("Die Zahlen müssen mindestens 2 betragen!");
            if(zahl2 < zahl1) throw new IllegalArgumentException("Zahl 2 muss größer als Zahl 1 sein!");
            if(zahl2 == zahl1) throw new IllegalArgumentException("Gib 2 unterschiedliche Zahlen an!");