Partage
  • Partager sur Facebook
  • Partager sur Twitter

PROBLEME AVEC equals

Sujet résolu
    25 décembre 2009 à 0:05:52

    mon programme consiste à vérifier si le premier argument du tableau String se trouve dans le reste du tableau ou non.
    voilà le code mais il m'affiche:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at occ.main(occ.java:11)

    public class occ {

    public static void main(String[] args) {

    String[] tab={"aaa","sssss","aaa","bb"};
    boolean trouve = false;
    String premier=tab[0];
    int i=1;
    do
    {
    trouve=tab[i].equals(premier);
    i++;
    }
    while((trouve==true)||(i==tab.length));

    if (trouve)
    {System.out.println("le premier argument est répété dans le reste du tableau");}
    else
    {System.out.println("le premier argument ne se répéte pas dans le reste du tableau");}

    }
    }
    SVP est-ce qu'il y a des solutions
    merci bien!!
    • Partager sur Facebook
    • Partager sur Twitter
      25 décembre 2009 à 1:47:58

      Salut !

      Déjà dans ton while tu mets tant que trouve = true, c'est pas bon car cela veut dire que si le 2ème élément du tableau n'est pas ce que tu recherches alors ça sortira de la fonction directement sans vérifier les autres ! Ensuite ce n'est pas un OU qu'il faut mettre mais un ET car tu veux continuer dans ton while tant que ces 2 conditions sont vrais !

      Donc ton gros problème est dans les conditions de ton while, il faut faire tant que !trouve (parce que tant que tu n'as pas trouver de chaines identiques tu continues) ET i < tab.length (< c'est plus une sécurité).

      Voila normalement sa marche ;)
      Si tu as un problème dit moi mais avec ce que je viens de te dire sa m'étonnerais :D
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        25 décembre 2009 à 6:22:38

        Citation : linconnue55

        SVP est-ce qu'il y a des solutions



        Certainement dude :D , voire beaucoup plus simple que la tienne; les collections d'objets

        linconnue55 t'es habitué a programmer avec le langage Pascal, je me trompe?
        Edit:
        // 'list' au lieu de 'tab'..
        LinkedList<String> list = new LinkedList<String>();
        list.add("aaa");
        list.add("sssss");
        list.add("aaaX");
        list.add("bb");
        
        // On recopie les elements de 'list' dans un nouvel objet: 'trimmedlist' 
        LinkedList<String> trimmedlist = new LinkedList<String>(list);
        String premier = trimmedlist.poll();// Récupérer le 1er element et le virer de la nouvelle liste 'trimmedlist'
        
        if(trimmedlist.contains(premier))
        System.out.println("le premier argument est répété dans le reste du tableau");
        else
        System.out.println("le premier argument ne se répéte pas dans le reste du tableau");
        

        Bon chance.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          25 décembre 2009 à 9:43:15

          Pas testé, mais en théorie ça devrait marcher

          //tableau juste parce que ça va plus vite à remplir que list.add
          String[] strings = {"a", "b", "c", "d", "a" };
          List < String > myList = Arrays.asList(strings);
          
          if(myList.lastIndexOf(myList.get(0)) > 0) {
          //trouvé
          }
          
          • Partager sur Facebook
          • Partager sur Twitter

          PROBLEME AVEC equals

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown