Occurence

Fermé
tic - Modifié par baladur13 le 7/12/2014 à 17:30
 tic - 9 déc. 2014 à 23:57
Bonjour,



Je débute en java et je dois ecrire un programme Occ.java lisant tous les arguments passés sur la ligne de commande et recherchant si le premier argument existe dans la suite de la ligne.J'ai essayé de le faire mais ça ne marche pas,voici mon code:
   class Occ
{   public static void main(String args[])
     {
      int d;String b;
      b=args[0];
   for(int i=1;i<=args.length;i++)
     {   
        i=i+1;
      if (args[i]==b)
      {
        System.out.println("TROUVE");
     
       
     }
   else
    {
        System.out.println("Non trouve");
    
    
   }
     
   
  }
  }
}

2 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
7 déc. 2014 à 17:42
Bonjour,

Plusieurs choses.

D'une part les indices commencent à 0, donc si ton tableau est de taille n, le dernier indice c'est n-1, pas n.
Il ne faut donc pas faire
i<=args.length
mais
i<=args.length-1
ou plus simplement
i<args.length
.

De plus, les String sont des objets, l'opérateur
==
va comparer deux objets pour dire s'ils sont identiques, mais ce que te veux toi c'est comparer deux objets pour savoir s'ils ont la même valeur. Pour cela tu as la méthode
equals
.

Enfin, tu as une double incrémentation dans ta boucle, il y a le
i++
mais aussi
i=i+1;
, il ne faut en garder qu'un seul, sinon ça comparera seulement un argument sur deux...

Remarque : ta variable
d
ne sert à rien.
0
Merci d'avoir repondu!Pour le i=i+1 je l' ai fait car je veux que la comparaison commence a partir de arg[1],car ça ne sert a rien que je compare arg[0] et arg[0].
J'ai essayé d'utiliser la methode equals en faisant ceci if (args[i]equalsb) mais à la compilation j'ai quelques erreurs
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
7 déc. 2014 à 18:20
"je veux que la comparaison commence a partir de arg[1]"
Ça tu l'as déjà pris en compte dans l'initialisation
int i=1
qui exclu de fait i==0
Si tu deux incrémentations (i=i+1 et i++) ça veut dire que tu vas aller de 2 en 2, tu commenceras donc à 1 puis tu passeras au 3, sans tester le 2 (idem pour le 4, le 6...)

"if (args[i]equalsb) mais à la compilation j'ai quelques erreurs"
Tu m'étonnes...
Il faudrait que tu apprennes les bases de Java, en l'occurrence ici sur l'appel des méthodes.
https://forums.commentcamarche.net/forum/affich-37622112-java-les-methodes
0
D'accord!merci!
0