1

Bonjour à tous;
SVP j'ai un problème qui me bloque totalement et donc je ne peux pas avancer.
J'ai une classe Combinaison2 qui contient :

1)une méthode boucle dont de type de retour est un tableau de String tch.
2) la méthode main qui appelle la fonction boucle.

au niveau de la méthode boucle je n'ai pas de problème.Seulement que lorsque je l'appelle dans main je n'aurais aucun affichage.je crée un tableau A de type String qui récupère le résultat de la méthode boucle.Mais lorsque j'affiche ce tableau A je n'aurais aucun résultat.Voila mon code pour plus de détaille.

import java.util.BitSet;


public class Combinaison2 {

public static int nbElements = 4;
public static int nbUn = 2;
public static int r=facto(nbElements)/(facto(nbUn)*facto(nbElements-nbUn));

public static void main(String[] args) {

String []a=new String[r];
BitSet idxs=new BitSet();
a=boucle(nbUn,0,nbElements, idxs);

for(int i=0;i<a.length;i++)
System.out.println(a[i]);

}


public static int facto(int n) {
int fact = 1;
for (int i=1; i<=n; i++) {
fact = fact * i;
}
return fact;
}


public static String [] boucle(int nbUn, int debut, int nbElements, BitSet idxs) {

int j=0;
int nb=0;
int w=0;
int z=0;
BitSet []tab=new BitSet[r];
if(nbUn > 0) {
for(int i = debut; i < nbElements; i++) {
idxs.set(i);
boucle(nbUn-1, i+1, nbElements, idxs);
idxs.clear(i);
}
}

else {

tab[j]=idxs;
j++;

}

for(int i=0;i<r;i++)
{
if(tab[i]!=null)
nb++;
}
BitSet []tab2=new BitSet[nb];
while ((z<tab.length)&&(w<nb))
{
if(tab[z]!=null){
tab2[w]=tab[z];
w++;
}
z++;
}

/*for(int i=0;i<nb;i++)

System.out.println(tab2[i]);*/
String []tch=new String[nb];
for(int i=0;i<tab2.length;i++){
tch[i]=tab2[i].toString();
}


return tch;
}

}



SVP j'ai vraiment besoin de votre aide

2

import java.util.BitSet; public class Combinaison2 { public static int nbElements = 4; public static int nbUn = 2; public static int r=facto(nbElements)/(facto(nbUn)*facto(nbElements-nbUn)); public static void main(String[] args) { String []a=new String[r]; BitSet idxs=new BitSet(); a=boucle(nbUn,0,nbElements, idxs); for(int i=0;i<a.length;i++) System.out.println(a); } public static int facto(int n) { int fact = 1; for (int i=1; i<=n; i++) { fact = fact * i; } return fact; } public static String [] boucle(int nbUn, int debut, int nbElements, BitSet idxs) { int j=0; int nb=0; int w=0; int z=0; BitSet []tab=new BitSet[r]; if(nbUn > 0) { for(int i = debut; i < nbElements; i++) { idxs.set(i); boucle(nbUn-1, i+1, nbElements, idxs); idxs.clear(i); } } else { tab[j]=idxs; j++; } for(int i=0;i<r;i++) { if(tab!=null) nb++; } BitSet []tab2=new BitSet[nb]; while ((z<tab.length)&&(w<nb)) { if(tab[z]!=null){ tab2[w]=tab[z]; w++; } z++; } /*for(int i=0;i<nb;i++) System.out.println(tab2);*/ String []tch=new String[nb]; for(int i=0;i<tab2.length;i++){ tch=tab2.toString(); } return tch; } }

3

Bonjour pokito;
le programme ne fonctionne !!! Je ne sais quelle est votre idée !!!!
SVP j'attends votre aide tsss sad mourn mourn

4

Une explication plus claire de ce qu'est censé faire ton code et de ce qui te pose problème avec un code qui compile et bien indenté ne ferait pas de mal.

Pense a poster ton code entre les balises
avatar

5

Nounou88> Il semble qu'il y ait un soucis avec ton code, à la ligne 73 du code formatté par pokito (./2), tu as la ligne suivante :tch = tab2.toString();

Tu ne peux pas affecter à un tableau de String un String (tout court). Je pense que tu voulais plutôt écrire :tch[i] = tab2.toString();

Dans cette configuration, l'exécution de ton code affiche bien des choses...
Je te conseille vivement d'utiliser un IDE (tel qu'éclipse) pour avoir l'affichage immédiat de ce genre d'erreurs.
Rest... In... Peace