IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Savoir si un tableau est une suite décroissante ou non


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 14
    Par défaut Savoir si un tableau est une suite décroissante ou non
    bonjour à tous

    je suis en train de faire un petit programme qui doit vérifier certaines conditions dont l'une étant

    "les chiffres du tableau forme une suite décroissante"

    j'ai donc mis en place la méthode suivante qui prend en paramètre d'entrée un tableau d'entier et qui renvoi un boolean si la condition est vérifiée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
         /**
         * méthode qui vérifie que les nombre d'un tableau sont une suite décroissante
         * @param tab le tableau de nombre
         * @return  true suite décroissante<br>
         *          false suite non décroissante
         */
        public static boolean isSuiteDecroissante(int[] tab){
            boolean isDecroissant = false;
            for (int index = 0; index < tab.length; index++) {
                int nb1 = tab[index];
                int nb2 = tab[index ++];
                if(nb1 >= nb2){
                    isDecroissant = true;
                } else {
                    isDecroissant = false;
                }
            }      
            return isDecroissant;
        }
    seul soucis ma méthode me dis que des nombre comme 47141 respecte cette condition, alors que ce n'est pas ce qui est attendu.

    Quelqu'un aurait il une idée ?

    merci d'avance.

  2. #2
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    tu fais 2 x ++, donc tu sautes chaque fois un index.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 14
    Par défaut
    donc au lieu d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for (int index = 0; index < tab.length; index++) {
      int nb1 = tab[index];
      int nb2 = tab[index ++];
      if(nb1 >= nb2){
        isDecroissant = true;
      } else {
        isDecroissant = false;
      }
    }
    je devrai plutôt faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for (int index = 0; index < tab.length - 1; index++) {
      int nb1 = tab[index];
      int nb2 = tab[index +1];
      if(nb1 >= nb2){
        isDecroissant = true;
      } else {
        isDecroissant = false;
      }
    }

  4. #4
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    presque, dans l'état actuel, lorsque tu seras sur la dernière itération, le +1 déclenchera un ArrayOutOfBoundException.

    Egalement, comme optimisation, tu pourrais sortir de la boucle dès que ton résultat est faux.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 14
    Par défaut
    résolue

    je n'incrémente plus que d'un l'index en faisant attention à la condition pour pas avoir une exception comme avant, et je garde le else qui fait que des les premier chiffres qui respecte pas, on repasse à condition false et on sort de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    /**
             * méthode qui vérifie que les nombre d'un tableau sont une suite décroissante
             * @param tab le tableau de nombre
             * @return      true suite décroissante<br>
             *                      false suite non décroissante
             */
    	public static boolean isSuiteDecroissante(int[] tab){
    		boolean isDecroissant = false;
    		for (int index = 0; index < tab.length -1; index++) { 
    			int nb1 = tab[index];
    			int nb2 = tab[index +1];
    			if(nb1 >= nb2){
    				isDecroissant = true;
    			} else {
    				isDecroissant = false;
    				break;
    			}
    		}		
    		return isDecroissant;
    	}
    merci

  6. #6
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    ou plus simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static boolean isSuiteDecroissante(int[] tab){
        for (int index = 0; index < tab.length -1; index++) { 
            if(tab[index] < tab[index +1]){
                return false
            }
        }		
        return true;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/04/2008, 16h41
  2. [MySQL] Savoir si un champ est une clé étrangère
    Par mattyeux dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/01/2008, 22h22
  3. Comment savoir si le fichier est une image
    Par MaitrePylos dans le forum Ruby on Rails
    Réponses: 15
    Dernier message: 10/05/2007, 15h31
  4. [Tableaux] Savoir si un tableau est associatif ou pas
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2007, 22h20
  5. Savoir de quel type est une connexion (wifi ou ethernet)
    Par NicolasJolet dans le forum Framework .NET
    Réponses: 7
    Dernier message: 13/02/2007, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo