Primzahlen

Informatikanfänger12

Aktives Mitglied
Hallo. ich habe folgende Klasse:
Java:
public class Prim1{
   

protected static int [ ] primz = new int [ 8 ] ;
static {
    
     primz [ 0 ] = 2;
for ( int i =1; i<primz . length ; i ++)
primz [ i ] = nextPrimz (i-1);
}

public static  int nextPrimz ( int k ) {
  int np=2;
switch ( k ) {
case 0: np=3 ; break ;
case 1: np=5 ; break ;
case 2: np=7 ; break ;
case 3: np=11 ; break ;
case 4: np=13 ; break ;
case 5: np=17 ; break ;
default: System.out . println ( "Error" ) ;
}
return np ;
}
}

Jetzt stellt sich die Frage warum "Error" zuerst ausgegeben wird, wenn ich folgende Testklasse habe.
Java:
class Prim1Test {
   

public static void main ( String args [ ] ) {
    
System.out.print ( " Primzahlen : " ) ;
for ( int i =0; i<7; i ++)
     System.out.print ( Prim1.primz [ i ] + " "  ) ;
     System.out.println ( );
}
}

Kann vllt jmd bitte helfen :)
 

Robat

Top Contributor
Weil nur beim default-Fall etwas ausgegeben wird.

Im static Initializer hast du eine Schleife die von 1 bis 7 läuft und die Methode nextPrimz aufruft (mit den Zahlen von 0 bis 6).
0..5 passiert nichts erst bei Zahl 6 springt er in den default-Zweig.

Danach gehts mit der Schleife in deiner main-Methode weiter.
 

Robat

Top Contributor
Ja ich weiß. Error kommt von der Schleife im static Initializer Block und die Zahlen aus der Schleife in deiner main Methode.
 

Robat

Top Contributor
Geh es doch einfach mal Schritt für Schritt durch. Überleg dir welche Werte i annehmen kann und mit welchen Werten die Methode aufgerufen wird bzw welchen Output die Methode produziert.
 

stg

Top Contributor
Änder deine Main-Methode doch mal ab zu:

Java:
class Prim1Test {
    public static void main (String args [] ) {
        new Prim1();
    }
}

Vielleicht wird dir dann klar, was da passiert?
 

MiMij

Bekanntes Mitglied
Erstmal: Ich hoffe du hast deinen Code bei dir ordentlich formatiert, wenn nicht gewöhn es dir gleich an, denn sonst schleichen sich schnell Fehler ein die man übersieht.
Ebenso solltest du bei for-Schleifen geschweifte Klammern setzen (klar bei Einzeilern nicht nötig), denna uch sonst kommt es schnell zu Fehlern.

Jetzt zu deiner Frage:
Wenn du in der Main methode nur noch "new Prim1()" stehen hast, heißt das ja das Error kommt aus der static methode in Prim1.
Da solltest du dir jetzt überlegen, was genau in der for-Schleife passiert.
- Er fängt an mit dem Aufruf der Methode nextPrimz, i hat den Wert 1, welcher Wert wird übergeben an deine Methode? In welches case kommt er dann?
- beim nächsten Durchgang der for-Schleife hat i den Wert 2, welcher Wert wird übergeben an deine Methode? In welches case kommt er dann?
- usw
- primz.length = 8, d.h. der letzte Wert von i ist ???, welcher Wert wird übergeben an deine Methode? In welches case kommt er dann?
 

Informatikanfänger12

Aktives Mitglied
- Er fängt an mit dem Aufruf der Methode nextPrimz, i hat den Wert 1, welcher Wert wird übergeben an deine Methode? In welches case kommt er dann?

Also dann wird der Methode 0 übergeben. Dann kommt man in den case, in dem 3 zurückgegeben wird.
Danach wird der Methode 1 übergeben bei i=2 und man landet bei 5.
Dann geht die Schleife bis i=7. Der Methode wird 6 übergeben und man landet beim Error.

Aber laut Skript soll der Fehler vor den Zahlen schon ausgegeben werden?
 

MiMij

Bekanntes Mitglied
Script?
Es wird halt erst die static ausgeführt (was "error" ausgibt, wie wir jetzt wissen und auch wissen warum) und wenn du in deiner main deine for-schleife wieder einfügst, werden halt die Zahlen ausgegeben.
 

YOES1805

Mitglied
Der Grund dafür ist. Das die Static methode mit der schleife ausgefğhrt wird. Dann die methode mit dem switch case. Alles laeuft eigentlich ganz normal nur wird keine ausgabe vorgenommen weil die main methode die ausgabe hat. Bis halt switch case auf default umspringt und da error ausgegeben werden soll. Danach erst wird deine main methode aufgerufen.

Wenn du zu jeder case eine system out schreiben würdest würdest du auch die ausgaben vor error bekommen.
 

MiMij

Bekanntes Mitglied
Ich weis immer noch nicht warum :(
Du hast es doch im Post vorher selber durchgedacht
Also dann wird der Methode 0 übergeben. Dann kommt man in den case, in dem 3 zurückgegeben wird.
Danach wird der Methode 1 übergeben bei i=2 und man landet bei 5.
Dann geht die Schleife bis i=7. Der Methode wird 6 übergeben und man landet beim Error.
Du sagst es quasi selbst, er landet beim Error, d.h. er gibt Error aus

Vllt ist dein einziges Verständnis Problem, dass was YOES eben beschrieben hat, die Ausgabe? Dann hat er/sie das ja schon erklärt, was da passiert.
 

YOES1805

Mitglied
MiMij er bitte :).
Um es besser zu verstehen svhreib einfach in einen oder mehrere cases eine system.out.prıntln. ich denke dann siehst du es auch wieso das so ist.
Die zahlen die du willst werden in der Methode schon berechnet, aber noch nicht ausgegeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
B Primzahlen bis 100 addieren Java Basics - Anfänger-Themen 16
H Primzahlen finden - Zeit optimieren Java Basics - Anfänger-Themen 34
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
P Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 Java Basics - Anfänger-Themen 8
Java The Hutt Primzahlen - die ersten 100 Java Basics - Anfänger-Themen 17
N Erste Schritte Primzahlen-ArrayIndexOutOfBounds Java Basics - Anfänger-Themen 23
R Primzahlen Zähler Programm / Benachbarte Primzahlen Java Basics - Anfänger-Themen 30
D Klassen Primzahlen überprüfen Java Basics - Anfänger-Themen 3
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
R primzahlen im array Java Basics - Anfänger-Themen 33
M Primzahlen, nur jede 2te ausgeben Java Basics - Anfänger-Themen 11
T Primzahlen Fehler Java Basics - Anfänger-Themen 4
K Primzahlen Java Basics - Anfänger-Themen 6
L Primzahlen im Array ausgeben Java Basics - Anfänger-Themen 3
P Primzahlen Java Basics - Anfänger-Themen 3
A Methoden Primzahlen erstellen von 1 bis 100-Codeprobleme Java Basics - Anfänger-Themen 2
H Variablenverfolgung - Primzahlen Java Basics - Anfänger-Themen 7
G Primzahlen Java Basics - Anfänger-Themen 6
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
S Primzahlen bis 1000 ausgeben Java Basics - Anfänger-Themen 3
K Methoden Primzahlen Java Basics - Anfänger-Themen 33
S Input/Output Primzahlen Datenbank Java Basics - Anfänger-Themen 11
F Primzahlen in Zahlenblöcken ausgeben Java Basics - Anfänger-Themen 9
M Primzahlen - es werden alle Nicht-Primzahlen ausgegeben Java Basics - Anfänger-Themen 5
M primzahlen Java Basics - Anfänger-Themen 4
S Programm zu Ermittlung von Primzahlen Java Basics - Anfänger-Themen 14
E Programm zum Primzahlen ausgeben-Fehler Java Basics - Anfänger-Themen 12
X Primzahlen Java Basics - Anfänger-Themen 7
S Primzahlen Java Basics - Anfänger-Themen 12
B Programmierobjekt - Primzahlen Java Basics - Anfänger-Themen 2
D Primzahlen ausgeben. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
N Primzahlen Java Basics - Anfänger-Themen 5
I Primzahlen check, String prüfen lassen. Java Basics - Anfänger-Themen 6
A OOP Programm zum bestimmen von Primzahlen, OutofBoundsException Java Basics - Anfänger-Themen 10
apple987123 Primzahlen Java Basics - Anfänger-Themen 12
A Primzahlen: ein paar offene Fragen Java Basics - Anfänger-Themen 2
T Primzahlen Java Basics - Anfänger-Themen 6
G Primzahlen Java Basics - Anfänger-Themen 18
B Primzahlen berechnen - Wieso unterschiedliche Java Basics - Anfänger-Themen 3
B Primzahlen Algorithmus - wo ist der Fehler ? Java Basics - Anfänger-Themen 2
E Primzahlen Java Basics - Anfänger-Themen 5
B Primzahlen mit Array errechnen! Java Basics - Anfänger-Themen 13
H Miller Rabin Test Primzahlen werden teilweise nicht gefunden Java Basics - Anfänger-Themen 5
M Wer kann mir bei Primzahlen helfen ? Java Basics - Anfänger-Themen 4
G Frage zur Primzahlen berechnung Java Basics - Anfänger-Themen 11
kulturfenster Primzahlen berechnen Java Basics - Anfänger-Themen 11
D Primzahlen Java Basics - Anfänger-Themen 4
N Zerlegung in Primzahlen Java Basics - Anfänger-Themen 7
F Programm Primzahlen Java Basics - Anfänger-Themen 5
J Primzahlen errechnen.ArrayLists abgleichen Java Basics - Anfänger-Themen 2
M Primzahlen Java Basics - Anfänger-Themen 6
C Primzahlen Java Basics - Anfänger-Themen 7
C Primzahlen Java Basics - Anfänger-Themen 2
S Primzahlen Java Basics - Anfänger-Themen 49

Ähnliche Java Themen

Neue Themen


Oben