Listes et fonctions
Résolu/Fermé
Booniak
Messages postés
11
Date d'inscription
vendredi 1 août 2014
Statut
Membre
Dernière intervention
29 août 2014
-
6 août 2014 à 13:41
Booniak Messages postés 11 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 29 août 2014 - 7 août 2014 à 23:13
Booniak Messages postés 11 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 29 août 2014 - 7 août 2014 à 23:13
A voir également:
- Listes et fonctions
- Fonction si et - Guide
- Ces codes secrets vous donnent accès aux fonctions cachées de votre smartphone Android - Accueil - Android
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Listes déroulantes en cascade excel - Guide
- Faire des listes déroulantes excel - Guide
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 août 2014 à 20:58
6 août 2014 à 20:58
Bonjour,
Ta ligne 17 c'est ça :
Et ton exception est relativement explicite :
Ce qu'il faudrait faire c'est :
Comme ça, si la liste est vide, tu ne regardes pas la valeur de son dernier élément alors qu'il n'existe pas...
Ta ligne 17 c'est ça :
while(liste.get(liste.size()-1)!=-1)
Et ton exception est relativement explicite :
ArrayIndexOutOfBoundsException: -1Ici -1 c'est la valeur que tu passes au get, ce qui est normal car la liste est vide, donc liste.size()=0, d'où liste.size()-1=-1 et liste.get(-1)=erreur.
Ce qu'il faudrait faire c'est :
while(liste.isEmpty() || liste.get(liste.size()-1)!=-1)
Comme ça, si la liste est vide, tu ne regardes pas la valeur de son dernier élément alors qu'il n'existe pas...
Booniak
Messages postés
11
Date d'inscription
vendredi 1 août 2014
Statut
Membre
Dernière intervention
29 août 2014
5
7 août 2014 à 11:41
7 août 2014 à 11:41
Ah ouais j'aurais pu évité ça même avec mes faibles connaissance en faisant
Sinon le || je comprend à quoi il sert dans cette situation mais globalement, ça veut dire:
<=si cette déclaration est fausse|| on appllique celle la=>
? On peut les enchainer en mode : case1||case2||case3..?
if(liste.size()==0) liste.add...; while(liste.get(liste.size()-1)!=-1) liste.add...;
Sinon le || je comprend à quoi il sert dans cette situation mais globalement, ça veut dire:
<=si cette déclaration est fausse|| on appllique celle la=>
? On peut les enchainer en mode : case1||case2||case3..?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 7/08/2014 à 20:11
Modifié par KX le 7/08/2014 à 20:11
Le || c'est un "ou" et en Java il est paresseux, ça veut dire que si la première condition est vraie on renvoie vrai pour toute l'expression, on ne calcule donc pas la deuxième condition (ce qui nous arrange vu qu'elle provoque une exception). Par contre si la première condition est fausse on calcule la deuxième puis la troisième, etc. jusqu'en avoir une qui est vraie, si la dernière est fausse on renvoie faux pour l'expression.
En gros
Remarque : cela fonctionne sur le même principe avec le && mais dans l'autre sens. Le premier faux l'emporte et on obtient vrai que si tout est vrai (c'est un "et").
En gros
boolean x = x1 || x2 || x3 || ... || xn;est équivalent à :
boolean x; if (x1) x = true; else if (x2) x = true; else if (x3) x = true; ... else if (xn) x = true; else x = false;
Remarque : cela fonctionne sur le même principe avec le && mais dans l'autre sens. Le premier faux l'emporte et on obtient vrai que si tout est vrai (c'est un "et").
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
Modifié par KX le 7/08/2014 à 20:11
Modifié par KX le 7/08/2014 à 20:11
Remarque : sur le même principe de code paresseux il est préférable d'utiliser
Ps. Ça c'est de la théorie, en pratique la taille de la liste est généralement stockée dans une variable donc il n'est pas nécessaire en réalité de tout recalculer à chaque fois, mais c'est le genre de choses dont tu ne peux jamais être totalement sûr...
liste.isEmpty()qui va renvoyer faux dès qu'elle rencontre le premier élément (s'il y en a) alors que
liste.size()==0requiert de parcourir toute la liste pour connaître sa taille exacte alors qu'on n'en a pas besoin.
Ps. Ça c'est de la théorie, en pratique la taille de la liste est généralement stockée dans une variable donc il n'est pas nécessaire en réalité de tout recalculer à chaque fois, mais c'est le genre de choses dont tu ne peux jamais être totalement sûr...
Booniak
Messages postés
11
Date d'inscription
vendredi 1 août 2014
Statut
Membre
Dernière intervention
29 août 2014
5
7 août 2014 à 23:13
7 août 2014 à 23:13
Oui c'est ce que j'avais compris , bien sur liste.isEmpty() est mieux c'est juste que j'était passé à coté en passant en revu la liste des outils de list, bref ça rentre doucement mais surement...euh...j'ai rien dis.
@+ dans le bus!
@+ dans le bus!