Valeur de retour toujours égale à zéro
Fermé
MikaelLahlou
-
25 sept. 2008 à 21:56
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 - 26 sept. 2008 à 11:27
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 - 26 sept. 2008 à 11:27
A voir également:
- Valeur de retour toujours égale à zéro
- Remettre a zero un pc - Guide
- Retour à la ligne excel - Guide
- Retour à la ligne google sheet ✓ - Forum Bureautique
- Egale barré ✓ - Forum Clavier
- Echo retour à la ligne ✓ - Forum Shell
1 réponse
Enax
Messages postés
203
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
16 mars 2010
145
26 sept. 2008 à 11:27
26 sept. 2008 à 11:27
Salut,
Ton code fonctionne bien. C'est juste que ton tableau fait la taille du nombre saisi et est donc bien plus grand que le nombre de diviseurs. Du coup, ça affiche plein de zéros. Pour cela, tu peux utiliser une collection qui est dynamique.
Tu as également des variables inutiles : tabStoc dans main et tableau dans chercherDiviseur.
Une dernière petite chose, au niveau de la logique, au delà de nombre / 2 le seul diviseur est nombre lui même. Donc il est plus rapide d'arrêter la boucle à nombre / 2 et de rajouter nombre ensuite.
Ton code fonctionne bien. C'est juste que ton tableau fait la taille du nombre saisi et est donc bien plus grand que le nombre de diviseurs. Du coup, ça affiche plein de zéros. Pour cela, tu peux utiliser une collection qui est dynamique.
Tu as également des variables inutiles : tabStoc dans main et tableau dans chercherDiviseur.
Une dernière petite chose, au niveau de la logique, au delà de nombre / 2 le seul diviseur est nombre lui même. Donc il est plus rapide d'arrêter la boucle à nombre / 2 et de rajouter nombre ensuite.
import java.util.ArrayList; import javax.swing.JOptionPane; public class Diviseurs { public static ArrayList<Integer> chercherDiviseur(int nb) { ArrayList<Integer> diviseurs = new ArrayList<Integer>(); int diviseur = 1; while(diviseur <= nb / 2) { if(nb % diviseur == 0) { diviseurs.add(diviseur); } diviseur++; } diviseurs.add(nb); return diviseurs; } public static void main(String args[]) { String entree = JOptionPane.showInputDialog("veuillez entrer un nombre !"); int nb = Integer.parseInt(entree); ArrayList<Integer> diviseurs = chercherDiviseur(nb); for (int indice = 0 ; indice < diviseurs.size() ; indice++) { System.out.println(diviseurs.get(indice)); } } }