Passage de paramètres aux fonctions en java
Fermé
Cloud95
Messages postés
4
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
18 février 2014
-
Modifié par Cloud95 le 18/02/2014 à 00:19
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 18 févr. 2014 à 18:59
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 18 févr. 2014 à 18:59
A voir également:
- Passage de paramètres aux fonctions en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Ouvrir paramètres - Guide
- Passage qwerty azerty - Guide
4 réponses
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
18 févr. 2014 à 03:41
18 févr. 2014 à 03:41
Bonjour,
Sans regarder le code que tu publies je pense qu'en toute logique (D'après la description de ton problème) tu devrais regarder plustôt dans ta fonction de saisie et récupérer tous les paramètres saisi et en faire un tableau plus le passer à ta fonction de vérification!
Donc montre plustôt le code ou tu récupère les entrées du clavier!
Sans regarder le code que tu publies je pense qu'en toute logique (D'après la description de ton problème) tu devrais regarder plustôt dans ta fonction de saisie et récupérer tous les paramètres saisi et en faire un tableau plus le passer à ta fonction de vérification!
Donc montre plustôt le code ou tu récupère les entrées du clavier!
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 févr. 2014 à 07:42
18 févr. 2014 à 07:42
Je rejoins tksteph sur l'idée que s'il y a un problème ce devrait être dans la manière dont tu remplis le tableau passé en argument.
Quelques remarques malgré tout sur ton code :
Ce que tu fais c'est compter le nombre de collisions au travers tes nb+=1 et nb+=0, alors d'une part nb+=0 c'est vraiment moche, d'autre part la seule chose que tu veux c'est savoir s'il y en a au moins 1, il est donc inutile de continuer le traitement dès lors que tu as nb>0, il faut donc penser à faire des return le plus tôt possible, au final tu ne devrais même pas avoir besoin de la variable nb.
Autre chose, mais c'est plus un détail, en faisant for(int i=0; i<collection.length-1; tu exclues de fait le cas où collection.length==0 ou 1, donc c'est inutile de faire les deux tests if juste avant.
Enfin, je te déconseille d'avoir dans tes codes quelque chose du genre if (test) return true; else return false; tu peux directement remplacer ça par un return test; ce qui reviendra au même mais en beaucoup plus clair car plus concis.
Quelques remarques malgré tout sur ton code :
Ce que tu fais c'est compter le nombre de collisions au travers tes nb+=1 et nb+=0, alors d'une part nb+=0 c'est vraiment moche, d'autre part la seule chose que tu veux c'est savoir s'il y en a au moins 1, il est donc inutile de continuer le traitement dès lors que tu as nb>0, il faut donc penser à faire des return le plus tôt possible, au final tu ne devrais même pas avoir besoin de la variable nb.
Autre chose, mais c'est plus un détail, en faisant for(int i=0; i<collection.length-1; tu exclues de fait le cas où collection.length==0 ou 1, donc c'est inutile de faire les deux tests if juste avant.
Enfin, je te déconseille d'avoir dans tes codes quelque chose du genre if (test) return true; else return false; tu peux directement remplacer ça par un return test; ce qui reviendra au même mais en beaucoup plus clair car plus concis.
Cloud95
Messages postés
4
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
18 février 2014
18 févr. 2014 à 11:47
18 févr. 2014 à 11:47
Bonjour,
Merci de m'aider
Voici la ou je recupere le tableau
Merci de m'aider
Voici la ou je recupere le tableau
taille = lectureClavier.nextInt();
String[] collection = new String[taille];
System.out.println("Saisir un a un la collection : ");
for(int i = 0; i < taille; i++)
{var = lectureClavier.next();
collection[i] = var.toString();
}
String[] test = collection;
System.out.println("Resultat : " + estUnEnsemble(test));
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 févr. 2014 à 13:28
18 févr. 2014 à 13:28
Je ne vois pas de raison que ça ne marche pas. Fait un affichage du tableau pour voir :
System.out.println (java.util.Arrays.toString(collection));
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 févr. 2014 à 18:59
18 févr. 2014 à 18:59
Je viens de tester et trouver le problème.
Dans ta méthode estUnEnsemble, tu fais
Il ne faut jamais comparer deux objets avec == qui ne compare pas la valeur des objets mais les objets eux même.
C'est pour ça que ça fonctionnait lorsque tu mettais en dur tes chaînes de caractères, parce qu'à la compilation quand Java voit plusieurs fois la même chaîne de caractères il l'associe à un seul objet, donc la comparaison fonctionne, ce qui n'est pas le cas lorsque tu fais des next au clavier, qui va te renvoyer des objets différents même s'ils ont la même valeur.
Il faut donc faire :
Dans ta méthode estUnEnsemble, tu fais
if(collection[j] == collection[i])alors que collection est un tableau de String !
Il ne faut jamais comparer deux objets avec == qui ne compare pas la valeur des objets mais les objets eux même.
C'est pour ça que ça fonctionnait lorsque tu mettais en dur tes chaînes de caractères, parce qu'à la compilation quand Java voit plusieurs fois la même chaîne de caractères il l'associe à un seul objet, donc la comparaison fonctionne, ce qui n'est pas le cas lorsque tu fais des next au clavier, qui va te renvoyer des objets différents même s'ils ont la même valeur.
Il faut donc faire :
if(collection[j].equals(collection[i]))