Récupérer une chaine d'un tableau [Résolu]

Signaler
Messages postés
26
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
6 octobre 2008
-
Messages postés
26
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
6 octobre 2008
-
Bjr a tous,je suis bloquée dans cet exercice durant 4j,et désormais j'ai pas trouvé
la solustion.Le but de cet exercice est de récupérer les données d'un tableau dans une
chaine de caratéres pour que le programme la vérifie si cette chaine compose un verbe du 1er
groupe ou non.
Exercice:
Fait un programme qui permet de saisir lettre par lettre dans un tableau de 20 caractère un
verbe du 1er groupe,On arrêtons la saisie avec un point.
une fois le verbe saisie le programme doit s'assurer que le verbe se termine par "er" et
affiche sa partie de conjugaison.


voilà mon code:


package Tableaux;
import java.util.*;
public class Exercices{
String T[]=new String[20];
 int i,j;
 String n;
 String ch=" ";
 public void prog()throws Exception
 {
  Scanner sc=new Scanner(System.in);
  do
  {
   System.out.print("Introduire une lettre en maniscule SVP: ");
   n=sc.next();
   n=n.toLowerCase();
   T[i]=n;
   i++;
  }
     while(n.equals(".")==false);
 
  for(i=0;i<T.length;i++)
  {
   System.out.print(T[i]+"\t");
  }
  for(j=0;j<T.length;j++)
  {
   if(T[j-2]=="e"&& T[j-1]=="r")
   {
      for(i=0;i<j-3;i++)
      {ch=ch+(T[i]);}
   } 
  }
  System.out.print("C'est un verbe ddu 1er groupe"+ch);
}
 
public static void main(String[] args)throws Exception
{
 Exercices ex=new Exercices();
 ex.prog();
}

9 réponses


Désolé,

C'est venu quand j'ai copié collé et je ne l'ai pas vu :

{
Scanner sc=
new Scanner(System.in);
do
{
System.out.print(
"Introduire une lettre en minuscule SVP: ");
n=sc.next();
n=n.toLowerCase();

if (!n.equals("."))
{

T[i] = n;

i++;

}
}

while(!n.equals(".")); // ==false);

int isv = i;      // ici il manquait int devant isv
String leverbe = "";

for(i = 0;i
{
System.out.println(T[i]);

leverbe = leverbe.concat(T[i]);
}

 

if ((T[isv-2].equals("e")) && (T[isv-1].equals("r")))
{

System.out.println("Le verbe " + leverbe + " est un verbe du 1er groupe.");
}

else System.out.println("Le verbe " + leverbe + " n'est pas un verbe du 1er groupe.");
}

...\ Dan /...

Bonjour,

Il y a pas mal d'erreurs dans ton programme.
Commence par ajouter un } à la fin du programme et à remplacer
 while(n.equals(".")==false); par :  while(!n.equals("."));
compile, execute et dis moi ce qu'il se passe et on continuera.

Cordialement.

...\ Dan /...
Messages postés
26
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
6 octobre 2008
2
Bonjour Danimo,d'abord merci de ton aide.Oui j'ai essayé ce que tu me dis et il s'amarche, mais le prob ici que l'exécution du programme s'arrête dans cet ligne:
if(T[j-2]=="e"&& T[j-1]=="r")
il m'affiche cet message:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:-2

Bonjour,

C'est une des reponses que j'attendais :

Tu de doute certainement que j'ai essayé ton programme et l'ai modifié, mais j'aimerais que TU vois toi-même ce qui ne vat pas.


 for(i=0;i<T.length;i++)
  {
   System.out.print(T[i]+"\t");
  }
  for(j=0;j<T.length;j++)
  {
   if(T[j-2]=="e"&& T[j-1]=="r")
   {
      for(i=0;i<j-3;i++)
      {ch=ch+(T[i]);}
   } 
  }

Quand tu ecris  for(j=0;j<T.length;j++)  à ton avis, quelle est la longueur de T et quelle est la longueur du verbe que tu as entré ?

Et ici   if(T[j-2]=="e"&& T[j-1]=="r"),  en j-2 et j-1 oú veux-tu pointer das T ?

Le message d'erreur te dis clairement ce qui n'est pas bon.



...\ Dan /...
Messages postés
26
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
6 octobre 2008
2
Merci d'avance,désolé pour ces problémes mais je suis débutante en java


for(j=0;j<T.length;j++): bah pr moi cet instruction sénifie que le programme va lire les éléments jusqu'au le dernier élément.quelque soit la langueur du contenue et quand il arrive au deux derniers éléments il vas les comparer s'il sont egaux à "er",puis affiche la partie de conjugaison sans "er".

D'accord, je comprend ce que tu veux faire, mais le message d'erreur (l'exception) indique que tu veux lire l'élément -2 de ton tableau. Ces éléments sont numérotés 0 à 20, donc tu es hors des dimensions de ton tableau ArrayIndexOutOfBoundsException:-2

La boucle
for(j=0;j<T.length;j++)
  {
   if(T[j-2]=="e"&& T[j-1]=="r")
   {
n'est pas nécessaire, il faut que testes directement à la fin de ton intro et non  à la fin du tableau.
Pour cela tu dois stocker la longueur de ce que tu as entré ici :
do
  {
   System.out.print("Introduire une lettre en minuscule SVP: ");
   n=sc.next();
   n=n.toLowerCase();
   T[i]=n;
   i++;
  }
     while(n.equals(".")==false); et cette longueur c'est i.

Voici une solution:

{

Scanner sc=new Scanner(System.in);
do
{

System.out.print("Introduire une lettre en minuscule SVP: ");
n=sc.next();
n=n.toLowerCase();

if (!n.equals("."))
{

ÏT[i]=n;

Ïi++;

Ï}
}

while(!n.equals(".")); // ==false);
isv i;ÏString leverbe "";

for(i = 0;i
{ÏSystem.out.println(T[i]);

Ïleverbe = leverbe.concat(T[i]);

}

 

if ((T[isv-2].equals("e")) && (T[isv-1].equals("r")))
{

ÏSystem.out.println("Le verbe " + leverbe + " est un verbe du 1er groupe.");
}

else System.out.println("Le verbe " + leverbe + " n'est pas un verbe du 1er groupe.");
}
Tu peux essayer ? Et n'hésites pas situ as besoin d'explications.

Il faut quand même savoir que tout ce qui sera entré terminant par er sera considéré comme verbe (exemple abcder ou 123456er).

D'autre part si on entre un 21eme caractère on aura l'exception :

ArrayIndexOutOfBoundsException: 20

Cordialement.

...\ Dan /...

Une petite erreur (grave) dans ma 3eme reponse :

D'accord, je comprend ce que tu veux faire, mais le message d'erreur (l'exception) indique que tu veux lire l'élément -2 de ton tableau. Ces éléments sont numérotés 0 à 20, donc tu es hors des dimensions de ton tableau ArrayIndexOutOfBoundsException:-2

Ces éléments sont numérotés 0 à 19 et non Ces éléments sont numérotés 0 à 20 !!!!!

Pardon.

...\ Dan /...
Messages postés
26
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
6 octobre 2008
2
Merci pr ton aide et ton explication.bah quand j'été coupée ton programme une erreur il m'afiche concernant le Ï qui ce trouve dans cette position
ÏT[i]=n;
Ïi++;
Ï}//Syntax error, insert "AssignmentOperator ArrayInitializer" to complete ArrayInitializerAssignement
et vous pouvez m'expliquer a quoi sert il , car c'est la 1er fois que je l'ai vu. j'ai compris d'aprés le  msg d'erreur qu'elle est une outil d'initialisation mais c'est pas claire.  
Messages postés
26
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
6 octobre 2008
2
bjr danimo merci de ton aide