problem bei verschachtelter for-schleife

strobi80

Mitglied
hello lieblingsforum...
gleich zum thema: es geht darum, eine zahl n über die tastatur einzugeben und jede zahl bis zu n zu überprüfen, ob es sich um eine primzahl handelt oder nicht.
die for schleife zur überpfüfung (hier: i) funktioniert einwandfrei. wenn ich diese allerdings in eine weitere for-schleife integriere (hier: j) bekomm ich ab n=4 immer angezeit, dass es sich um keine prim handeln würde... seht ihr, wo der fehler ist?



Java:
import java.io.*;


public class PA3a 
{


	public static void main(String[] args) throws IOException 
	{

	double n;
	
	
String eingabeZeile;
boolean prim=false;
		
System.out.println ("Eingabe");
BufferedReader eingabe = new BufferedReader (new InputStreamReader(System.in));
eingabeZeile = eingabe.readLine();
n = Double.parseDouble(eingabeZeile);
		
			
 for(int i=1; i<=n; i++)
 {						
	for(int j=2; j<i-1; j++ )
		  
            if ((i % j) == 0) { 
                prim=true; 
            } 
	if(prim==false){
		System.out.println( i + "  ist eine Primzahl");}

		else{System.out.println(i + "  ist keine Primzahl");}

}
}
}
 
Hallo strobi80,

Du hast vergessen, am Fuß der äußeren Schleife die Prüfung wieder zurückzusetzen.

Wenn Du in Deinem Beispiel in Zeile 37

[JAVA=37]
prim = false;
[/code]

einfügst. Sollte es funktionieren.

Gruß,
ROlf

BTW: Es wäre übersichtlicher, wenn Du etwas mehr auf Einrückungen in Deinem Code achtest
und u.a. Klammern für die innere Schleife verwendest.
 
ich danke dir...ich habs nämlich grad gemerkt, als ich mir meinen beitrag nochmal durchgeschaut hab.
wenn ich nämlich den wert zum schluss nicht zurücksetze, und beispielsweise mit i=6 rechne, rechnet mir meine zweite for-schleife: 6%2 = false; 6%3=true; 6%4=false; usw. dann ists klar, dass er mir zum schluss wieder den false wert übernimmt 🙂

gecheckt und abgespeichert *g
 
Die anderen habe den Fehler ja schon adressiert.

Aber:
[java=33]
if(prim==false){
System.out.println( i + " ist eine Primzahl");}

else{System.out.println(i + " ist keine Primzahl");}[/code]
Die Logik ist entgegengesetzt zum Namen der Variablen. Das ist ein NoGo!

Außerden ist
Code:
if(prim==false)
Unsinn.
Besser:
Code:
if(!prim)
und noch besser:
Code:
if(!isPrim)
.

bye
TT
 

Zurück
Oben