Comparaison d'entiers dans un tableau dynamique
Résolu
prudya
Messages postés
8
Statut
Membre
-
pudya -
pudya -
bonjour à tous,
je souhaiterais comparer des entiers d'un tableau dynamique tel sorte que le minimum de leur somme soit supérieur à une constante donnée ( type entier).
merci de m'aider.
je souhaiterais comparer des entiers d'un tableau dynamique tel sorte que le minimum de leur somme soit supérieur à une constante donnée ( type entier).
merci de m'aider.
1 réponse
-
Bonjour,
"comparer des entiers d'un tableau dynamique tel sorte que le minimum de leur somme soit supérieur à une constante"
Ça ne veut pas dire grand chose... Une comparaison ça permet de savoir entre deux valeurs laquelle est inférieure/égale/supérieure à l'autre. Mais ça ne va pas calculer une somme. Et c'est quoi le minimum d'une somme ?
Bref, tu n'aurais pas un exemple pour illustrer ce que tu veux faire ?
De plus tu parles de "tableau dynamique" à quoi ça correspond dans ton code ?-
voici, le code pour illustrer. dans ce cas, j'ai ordonné les valeurs, je souhaite avoir uniquement la plus petite des sommes que j'ai obtenu.
import java.util.ArrayList; import java.util.Collections; public class demande { /** * @param args */ public static void main(String[] args){ ArrayList<Integer> coll = new ArrayList<Integer>(); coll.add(0,1); coll.add(1,2); coll.add(2,2); coll.add(3,3); coll.add(4,4); coll.add(5,2); coll.add(6,1); /*Object obj = Collections.min(coll); System.out.println(obj);*/ Collections.sort(coll); System.out.println(coll); /*coll.remove(10); System.out.println(coll);*/ //calcul du total int a =7; int som=0; for(int i=0; i<coll.size();i++) { som=som+coll.get(i); if(som>a){ Object Som = Collections.min(coll); System.out.println(som); } } } }
le résultat donne:[1, 1, 2, 2, 2, 3, 4]
8
11
15
alors que je veux obtenir 8. en outre, si je change la valeur de a, je peux avoir un autre résultat.
merci. je ne suis qu'un débutant -
Une fois que tu as
if (som>a)
tu peux arrêter ta boucle avecbreak
, comme ça tu n'affiches pas les sommes suivantes.
Avec quelques améliorations au passage, ça donne ceci :
import java.util.*; public class Demande { public static void main(String[] args) { List<Integer> coll = Arrays.asList(1, 2, 2, 3, 4, 2, 1); Collections.sort(coll); System.out.println(coll); int a = 10; int som = 0; for (Integer n : coll) { som += n; if (som > a) break; } System.out.println(som); } } -
-
-
Il n'est jamais bon de modifier les données que l'on a en entrée, il vaut mieux calculer une liste de résultat à côté :
List<Integer> result = new ArrayList<>(); int som = 0; for (Integer n : coll) { som += n; if (som > a) break; result.add(n); } System.out.println(som); // 11 System.out.println(result); // [1, 1, 2, 2, 2]
-