[Résolu] Des connaisseurs en Java?

Posté par JorisProd le 29/11/2016 à 21h38

[Résolu] Des connaisseurs en Java?

Le 29/11/2016 à 21h38

Le 29/11/2016 à 21h54

Édit: Merci beaucoup à ian & pierre28 c'était un truc tout con xD

Salut, comme je vois qu'il y a vraiment beaucoup de développeurs ici j'ai décidé de poster un topic pour une erreur que je pense conne mais j'y arrive pas lol (je suis débutant après), comme je suis en BTS SIO j'ai des PPE à rendre (n'allez pas poster "Ah ça me rappel ma jeunesse xD), et du coup je fais une application en client lourd, du coup j'ai quasi fini le problème c'est que j'avais pas de contrôle donc un des points les plus importants.

Voici une image de l'appli:


L'interface graphique je l'ai fais avec WindowBuilder pour gagner du temps et mon problème c'est que par exemple je fais un:

Ce message a été masqué par son auteur. Cliquez pour l’afficher.
if(recup_km == "test"){
sysout("c'est ok");
}

Où sinon plus simple voilà la capture d'écran


Voici les informations nécessaire pour comprendre mon code:



Par contre si après la déclaration de recup_km je lui mets recup_km = "Kilométrage" sa fonctionne donc bon..
Merci de votre aide! ;)

7 commentaires

NOUVELLE REPONSE

Nombre de réponses par page

Ce paramètre s’applique automatiquement à l’ensemble des sujets.

Flux RSS des réponses

X.LINK

Le 29/11/2016 à 21h40 (Modifié le 29/11/2016 à 21h45)

#1 Signaler
Java... ca me rappele ma mauvaise jeunesse !
JorisProd

Le 29/11/2016 à 21h42

#2 Signaler
Java... ca me rappele ma mauvaise jeunesse !
xD arrêtez avec vos "alala le BTS SIO/IG.. que des souvenirs" xD
ian

Le 29/11/2016 à 21h47 (Modifié le 29/11/2016 à 21h50)

#3 Signaler
Hum hum ... là quand même ce sont les bases que tu dois reprendre ...

En Java tout est objet (bon sauf les types primitif), donc ton test d'égalité tu le fais sur des références.

En gros tu vérifies que l'adresse mémoire de ton objet (String) recup_km est identique à l'adresse mémoire de l'autre objet, car oui quand tu écris "Kilométrage" cela créé un objet de type String.

Bref, petite révision en vue, et pour corriger cette partie de ton code tu dois remplacer par ça:

if(recup_km.equals("Kilométrage")) {
pierre28

Le 29/11/2016 à 21h50 (Modifié le 29/11/2016 à 21h50)

#4 Signaler
J'ai pas compris où est le problème, mais pour tester l'égalité de 2 chaines de caractères tu devrais utiliser String.equals() au lieu de ==
Avec == tu demande si les objects sont identiques, et ils le sont pas, ce sont 2 objets distincts stockés à 2 adresses mémoire différentes (mais de même contenu).

edit: ha ben trop lent
JorisProd

Le 29/11/2016 à 21h51

#5 Signaler
Hum hum ... là quand même ce sont les bases que tu dois reprendre ...

En Java tout est objet (bon sauf les types primitif), donc ton test d'égalité tu le fais sur des références.

En gros tu vérifies que l'adresse mémoire de ton objet recup_km est identique à l'adresse mémoire de l'autre objet, car oui quand tu écris "Kilométrage" cela créé un objet de type String.

Bref, petite révision en vue, et pour corriger cette partie de ton code tu dois remplacer par ça:

if(recup_km.equals("Kilométrage")) {

:'( :'( :'( , merci beaucoup le pire c'est que j'avais eu ce problème pendant longtemps pour créer un espace membre j'avais fais pareil pour une connexion par exemple:
if(resultat.getString("mot_de_passe").equals(passwordField.getText()))

Merci beaucoup pour la réponse rapide, et désolé xD
ian

Le 29/11/2016 à 22h00

#6 Signaler
Et pour parfaire le truc, j'ai oublié de dire que ton "Kilométrage" semble être une constante, et dans ce cas on préfère la définir comme telle:

public static final String KILOMETRAGE = "Kilométrage";

Ensuite tu utilises cette constante partout où nécessaire. Cela te sauvera la vie le jour ou tu voudras en changer la valeur, et que malencontreusement tu oublieras de modifier à un endroit ... :)
JorisProd

Le 29/11/2016 à 22h07 (Modifié le 29/11/2016 à 22h13)

#7 Signaler
Et pour parfaire le truc, j'ai oublié de dire que ton "Kilométrage" semble être une constante, et dans ce cas on préfère la définir comme telle:

public static final String KILOMETRAGE = "Kilométrage";

Ensuite tu utilises cette constante partout où nécessaire. Cela te sauvera la vie le jour ou tu voudras en changer la valeur, et que malencontreusement tu oublieras de modifier à un endroit ... :)

Merci beaucoup c'est très sympa de ta part! ;)
Je vais pas te cacher que j'avais pas compris au début mais en la définissant j'ai très vite compris et je trouve ça utile merci beaucoup! ;)
PS: J'ai fais pareil pour contrôler prix vente, description, prix achat, coûts de réparations avec ça merci :p

Laisser une réponse

Des champs obligatoires n’ont pas été remplis, ou l’ont été incorrectement.