sarita199
Messages postés26Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention 6 octobre 2008
-
5 oct. 2008 à 02:15
Utilisateur anonyme -
7 oct. 2008 à 01:14
Bsr a tous, je suis bloquée dans ce code qui permet de supprimer les occurences(les doublants) d'un mot ou d'une phrase donnée, Exp: football donne fotbal
Avez vous une suggestion!!!
Scanner sc=new Scanner(System.in);
public void AffectationTable()throws Exception
{
String T1[],T2[];
int i=0,j=0;
int l=0,k=0;
int length=10;
T1=new String[length];
T2=new String[length];
String value;
do
{
System.out.print("Introduire une phrase: ");
value=sc.next();
T1[i]=value;
i++;
}
while(!value.equals("."));
T2[k]="";
for(j=0;j<length;j++)
{
if(T1[j]!=T1[j+1])
T2[k]=T2[k]+T1[j];
k++;
}
new Scanner(System.in);
37 publicvoid AffectationTable()throws Exception
38 {
39 String T1[],T2[];
40 int i=0,j=0;
41 int l=0,k=0;
42 boolean x = false;
43 int isv = 0;
44 int length=10;
45 T1=new String[length];
46 T2=new String[length];
47 // length n'est pas le nombre de caracteres entrés
48 // mais le nombre d'éléments maxi des tableaux T1 et T2
49 // dans cet exemple 10 éléments numerotés 0 a 9
50 // Remarque : il vaudrait mieux nommer T1 et T2 t1 et t2
51 // un nom de class doit commencer par une majuscule(convention)
52 String value = "";
53
54 for (i = 0; i < length; i++)
55 {
56 System.out.print("Introduire une phrase: ");
57 value=sc.nextLine(); // <<<<<<<<<<<<<<<<<<<<<<<<
58 if ((value.equals(".")) || (value.length() == 0))
59 {
60 x = true; // <<<<<<<<<<<<<<<<<<<<<<<<
61 isv = i; // <<<<<<<<<<<<<<<<<<<<<<<<
62 break;
63 }
64 System.out.println("value = " + value);
65 x = false; // <<<<<<<<<<<<<<<<<<<<<<<<
66 T1[i]=value;
67 System.out.println("T1[" + i + "] = " + T1[i]);
68 // ici on peut rechercher les doubles, mais on garde ton idée de le faire
69 // dans la boucle suivante
70 // Remarque : ne pas oublier qu'il y a des mots qui ont des lettres
71 // en bouble (femme, bonnet, attraper...) mais on n'en tiendra pas compte
72 // ce n'est certainement pas le but de l'exercice sinon ....
73 }
74
75 T2[k]="";
76 int lgvalue;
77 String car = "";
78 String carsv = "";
79 String nvalue = "";
80
81 for(j=0;j<length;j++)
82 {
83 if (x) // <<<<<<<<<<<<<<<<<<<<<<<<
84 if (j == isv) // <<<<<<<<<<<<<<<<<<<<<<<<
85 break; // <<<<<<<<<<<<<<<<<<<<<<<<
86 value = T1[j];
87 System.out.println("value2 = " + value);
88 lgvalue = value.length();
89 for (k = 0; k < lgvalue; k++)
90 {
91 car = value.substring(k, k +1);
92 if (!car.equals(carsv))
93 {
94 nvalue = nvalue + car;
95 carsv = car;
96 }
97 }
98 T2[j] = nvalue;
99 nvalue = "";
100 }
101 int fini = length;
102 // pour ne pas lister les T2[j] = null, quitter les // des 2 lignes suivantes
103 //if (x)
104 //fini = isv;
105 for(j=0;j<fini;j++)
106 {
107 System.out.println("T2[" + j + "] = " + T2[j]);
108 }Cordialement.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 5 oct. 2008 à 11:58
Salut:
Ici, j'ai fait le découplage entre la procédure de suppression des doublons et d'extraction des jetons d'une chaine de caractères.
Supprimer les doublons dans un tableau de chaînes de caractères.
public String[] unique(String[] strings) {
Set<String> set = new HashSet<String>();
for (String s : strings) {
set.add(s);
}
return s.toArray(new String[0]);
}
pour découper une chaîne de caractères:
public String[] tokenize(String string) {
String[] tokens; if (string null || string.trim().length() 0) {
tokens = new String[0];
} else {
StringTokenizer st = new StringTokenizer(string);
int count = st.countTokens();
List<String> list = new ArrayList<String>();
while (st.hasMoreTokens()) {
list.add(st.nextToken());
}
tokens = list.toArray(new String[0]);
}
return tokens;
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 5 oct. 2008 à 11:59
Salut:
Une correction:
public String[] unique(String[] strings) {
Set<String> set = new HashSet<String>();
for (String s : strings) {
set.add(s);
}
return set.toArray(new String[0]);
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 5 oct. 2008 à 12:00
Salut:
public String[] unique(String[] strings) {
Set<String> set = new HashSet<String>();
for (String s : strings) {
set.add(s);
}
return set.toArray(new String[0]);
}
public String[] tokenize(String string) {
String[] tokens; if (string null || string.trim().length() 0) {
tokens = new String[0];
} else {
StringTokenizer st = new StringTokenizer(string);
List<String> list = new ArrayList<String>();
while (st.hasMoreTokens()) {
list.add(st.nextToken());
}
tokens = list.toArray(new String[0]);
}
return tokens;
}
public String[] tokenize(String string) {
String[] tokens; if (string null || string.trim().length() 0) {
tokens = new String[0];
} else {
StringTokenizer st = new StringTokenizer(string);
Set<String> set = new HashSet<String>();
while (st.hasMoreTokens()) {
set.add(st.nextToken());
}
tokens = set.toArray(new String[0]);
}
return tokens;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
sarita199
Messages postés26Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention 6 octobre 20082 6 oct. 2008 à 01:54
Merci pr vous Ombicieus_Developper et damino, les deux méthodes ça marche bien mais j'ai choisi la celle de damino par ce que je travail sur la notion des tableaus et pas des collections:
damino j'ai modifié un petit peux ta méthode pour le rendre breve,mais j'ai une petite question pr toi pr koi on ne peux pas travailler sur une seul boucle???
public void AffectationTable1()throws Exception
{
int i=0,j=0,k=0;
String chain = "",chain1= "",valchain = "",fini="";
boolean trouve = false;
String value = "";
for (i = 0; i < length; i++)
{
System.out.print("Introduire une phrase: ");
value=sc.nextLine();
if ((value.equals(".")) || (value.length() == 0))
{ trouve = true;
break;}
T1[i]=value;
}
T2[k]="";
int val;
for(j=0;j<length;j++)
{
if(j == i) //A koi sert il???
break;
value = T1[j];
val = value.length();
for (k = 0; k < val; k++)
{
chain = value.substring(k, k +1);
if (!chain.equals(chain1))
{
valchain = valchain + chain;
chain1 = chain;
}
}
T2[j] = valchain;
valchain = "";
}
// System.out.println("Le nombre d'élément: "+j);
for(int l=0;l<j;l++)
{
System.out.println(T2[l]);
}
Ce n'est pas ce que j'ai écri mais if(j == isv) isv est la sauvegarde de i au moment où on a détecté la frappe de "." ou une intro sans frappe, donc la fin des intros.
C'est pour éviter de lire T1 alors qu'il n'y à plus rien d'entré, mais aussi pour éviter une exception ici:
val = value.length(); alors que val est null.
Mais il ne faut faire ce test que si trouve est true :
if (trouve)
if (j == i) // j'ai utilisé isv (sauvegarde de i) car on risque un jour de modifier i avant d'arriver ici
break;
ou bien :
if (trouve)
{
if (j == i)
break;
}
ce qui est plus lisible