2017-06-20 3 views
0

J'ai donc écrit ce petit programme qui est censé vérifier si un nombre est un nombre premier et si c'est le cas, il faut l'ajouter à un arraylist. Le problème est qu'il ajoute juste le nombre 3 et s'arrête ensuite. Est-ce que quelqu'un pourrait m'expliquer pourquoi il se comporte comme ça?Mon programme devrait calculer les nombres premiers, mais s'arrête après le premier nombre

import java.util.ArrayList; 
public class main{ 
    public static void main(String args[]){ 
     ArrayList Primzahlen=new ArrayList(); 
     int current=1; 
     boolean prim=true; 
     for(int a=0;a<100;a++){ 
      for(int b=2;b<current;b++){ 
       if(current%b==0){ 
        prim=false; 
       } 
       if(b==current-1){ 
        if(prim==true){ 
         Primzahlen.add(current); 
        } 
       } 
      } 
      current++; 
     } 
     System.out.println(Primzahlen); 
    } 
} 
+3

Vous devriez essayer pas à pas dans votre code dans un débogueur. – hatchet

+4

Vous définissez 'prim = false' si' current% b == 0' mais vous ne le définissez jamais à true. –

+0

Merci. Je pense que je n'aurais pas manqué une erreur aussi évidente. – LuisIsLuis

Répondre

0

Vous devez réinitialiser prim à true après avoir terminé la vérification de la valeur actuelle.

public static void main(String args[]){ 
     ArrayList Primzahlen=new ArrayList(); 
     int current=1; 
     boolean prim=true; 
     Primzahlen.add(2); 
     for(int a=3;a<100;a++){ 
      for(int b=2;b<current;b++){ 
       if(current%b==0){ 
        prim=false; 
       } 
       if(b==current-1){ 
        if(prim==true){ 
         Primzahlen.add(current); 
        } 
       } 
      } 
      prim=true; 
      current++; 
     } 
     System.out.println(Primzahlen); 
    } 

Notez la prim = true proche actuelle ++

+0

Ou juste déplacez 'boolean prim = true;' sur une ligne, comme @ saka1029 suggéré dans les commentaires. –

+0

Plusieurs façons de résoudre un problème. Je l'ai posté avant de voir le commentaire. –