Méthode Boolean en Java

Fermé
Amour - 19 mars 2011 à 17:24
KX
Messages postés
16581
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
26 juillet 2022
- 23 août 2016 à 13:47
Bonjour,
je suis débutant en Java, très débutant même. Je veux créez une classe NombrePremier contenant une boolean qui renvoie true si le nombre donné est un nombre premier et false sinon. Voici ce que j'ai fais:

public class NombrePremier
{
public static boolean bool (int nb)
{
int i;
for (i=2;i<=nb;i++)
{
if(nb>=2 && nb%i==0) return bool=true;//nombres premiers commencent par 2
else return bool =false;
break;
}
}
public static void main( String args [ ] )
{
int nb=2;
bool(nb);
}

}

mais ça n'marche toujours. Pourrais-je avoir un peu d'aide svp!

Merci.


A voir également:

7 réponses

choubaka
Messages postés
39053
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
4 août 2022
2 086
19 mars 2011 à 17:38
bonjour

purquoi tu fais une boucle "for" alors que tu ne donnes qu'un seul argument (nb) ??? Ce serait un tableau ou un arraylist, d'accord, mais là...
2
Mais pour tester s'il est premier.
nb/1, puis par 2, 3...
0
choubaka
Messages postés
39053
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
4 août 2022
2 086
19 mars 2011 à 17:46
un simple modulo suffit alors ..
0
en fait mon problème c'est le "i" comment le remplacer si je n'mets pas une boucle???
0
Merci beaucoup pour votre aide... voici le code donc:

package training;

public class NombrePremier
{
public static boolean bool (int nb)
{
if(nb>=2 && nb%i==0) return bool=true;//nombres premiers commencent par 2
else return bool =false;
}
public static void main( String args [ ] )
{
int nb=2;
bool(nb);
}

}

Pourquoi ça marche toujours pas!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
package training;

public class NombrePremier
{
public static boolean bool (int nb)
{
boolean premier=false;
if(nb>=2 && nb%nb/2==0) return premier=true;
else return premier=false;
}
public static void main( String args [ ] )
{
int nb=2;
bool (nb);
}
}

Je crois que j'ai progressé, mais il reste un dernier truc, c'est quoi svp? Parce que ça marche toujours pas!
0
choubaka
Messages postés
39053
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
4 août 2022
2 086
19 mars 2011 à 19:31
public class NombrePremier
{
public static boolean bool (int nb)
{
boolean premier=false;
if(nb>=2 && nb%nb/2==0) premier=true;

return premier;

}
public static void main( String args [ ] )
{
int nb=2;
bool (nb);
}
}

ton booleén est déjà initialisé à false, essaye comme ça
0
Mais il n'affiche toujours rien, je veux qu'il affiche la valeur qu'il renvoi!
0
nabil07
Messages postés
140
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
10 avril 2014
63
20 mars 2011 à 00:36
Bonsoir,
dans le main, tu dois invoquer la méthode via le nom de la classe
comme ceci:
NombrePremier.bool(nb);
puisque la méthode bool est statique donc tu n'es pas besoin de créer un nouveau objet de la classe NombrePremier.

@+
0
slt essai avec ceci ca marche

 public class Premier {
           //ici on crée 1 methode qui teste si 1 nombre a divise un nombre b
  public static boolean isDiviseur(int a,int b){
    
    if(a%b==0)return true;
    else return false;
    
   }
     // ici on calcule le nombre de diviseur du nombre a tester en utilisant 1 boucle for //avec i qui varie de 1 jusqu au nombre a a tester tout en faisant appelle a la 1er fonction

      public static int nbreDiviseur(int a){
    int i, comp=0;
    for(i=1;i<=a;i++){
     //apelle de la fonction isDiviseur son type de retour par defaut                               //est true
     if(isDiviseur(a,i))
     comp++;
     
    }
    return comp;
    }
  //ici tu as la fonction qui teste si ton nombre est 1er ou pas 
   public static  boolean isPremierA(int a){
    int b=nbreDiviseur(a);
//ici b represente le nombre de diviseur de a si de 1 jusqu a b b poss2de seulement 2 //diviseurs alors tu peut affirmer que b est premier
    if(b==2) return true;
    else return false;
  public static void main(String[] a){
    
    System.out.println("le nbre 17 est il premier :"+isPremierA(17));

System.out.println("le nbre 14 est il premier :"+isPremierA(14))  
}
}

essai ce code sur un editeur tu verra que ca marche.
0
KX
Messages postés
16581
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
26 juillet 2022
2 972
23 août 2016 à 13:47
Bonjour,

Le fait que ça fonctionne ne veut pas dire que c'est forcément correct...

Il ne faut jamais faire
if (condition) return true; else return false;
c'est une mauvaise compréhension des booléens (justement le thème de cette discussion), car x vaut déjà true ou false donc il faut faire directement
return x;
c'est plus court et nettement plus correct.

Ensuite ça ne sert à rien de systématiquement compter tout les diviseurs d'un nombre. Plus l'algorithme est court (s'arrête rapidement) mieux c'est. Ici, il suffit de trouver un seul diviseur pour déterminer que le nombre n'est pas premier, que ce soit avec 2, 3... ou 50 diviseurs peu importe.

Remarque : cette discussion a plus de 5 ans, je doute que la demande soit toujours d'actualité.
0