OVH Cloud OVH Cloud

Self Learning - Question sur les string

5 réponses
Avatar
Latyr_Dev
Bonjour

J'ai de nouveau une question qui paraitra stupide =E0 bien d'entre vous=20
mais h=E9las la r=E9ponse n'est pas triviale pour moi.

Pourquoi le CODE A est il correct et pas le CODE B ?
Est il possible d'utiliser String[] dans un tel cas est si oui comment=20
adapter mon return ?

De mani=E8re g=E9n=E9rale quand dois je utiliser String et quand String[] ?


Merci d'avance.

Latyr


/** CODE A **/
public String getOrigine() {
=09return ("(" + origine.getX() + ";" + origine.getY() + ")");
}

/** CODE B **/
public String[] getOrigine() {
=09return ("(" + origine.getX() + ";" + origine.getY() + ")");
}

5 réponses

Avatar
Francis JUGE-BOIRARD
Bonjour.

Code A correct car il retourne un String et pas un String[] (tableau de
String).
/** CODE A **/
public String getOrigine() {
return ("(" + origine.getX() + ";" + origine.getY() + ")");
}

Code B incorrect pour la même raison.

la déclaration de la méthode indique qu'elle retourne un tableau de
String (String[]) alors que la méthode retourne un String.
/** CODE B **/
public String[] getOrigine() {
return ("(" + origine.getX() + ";" + origine.getY() + ")");
}


return (new String[] {"(" + origine.getX() + ";" + origine.getY() + ")"});
devrait fonctionner bien que le fait de retourner un tableau à un seul
élément de façon systèmatique soit complètement inutile.

Quand utiliser String ? Et bien quand on à besoin d'une seule chaine de
caractère.
Quand utiliser String[] ? Quand on à besoin de plusieurs chaine de
caractère.

Exemple de String[].

String[] st = new String[2];

st[0] = "Bonjour ";
st[1] = "Monde";

System.out.println (st[0] + st[1]); // Affiche "Bonjour monde".

Avatar
Bernard Koninckx
Dans le code A tu retourne bien une seule String. " x" + ... + "x"

Dans le code B ta fonction s'attend a retourner un tableau de chaîne et non
une String.
Donc si tu renvoie ta String fromatée comme elle est ton valeur de retour
est forcément pas appropriée.
Par contre si tu avais écrit:
return {"x" + ... + "x"};
Cela devrait fonctionner puisque c'est un tableau. Je n'ai pas testé celà
... mais tu peux toujours essayer.

Les tableaux de valeurs sont a utiliser si tu veux retourner plus d'une
valeur du même type ou même de types différents si ton tableau de valeurs
est du type Object; pourquoi s'ennuyer a complexifier le code si tu cherche
a retourner une seule valeur. Autant utiliser le type générique de base.

En espérant avoir répondu à ta question.

Bernard


"Latyr_Dev" a écrit dans le message de
news:
Bonjour

J'ai de nouveau une question qui paraitra stupide à bien d'entre vous
mais hélas la réponse n'est pas triviale pour moi.

Pourquoi le CODE A est il correct et pas le CODE B ?
Est il possible d'utiliser String[] dans un tel cas est si oui comment
adapter mon return ?

De manière générale quand dois je utiliser String et quand String[] ?


Merci d'avance.

Latyr


/** CODE A **/
public String getOrigine() {
return ("(" + origine.getX() + ";" + origine.getY() + ")");
}

/** CODE B **/
public String[] getOrigine() {
return ("(" + origine.getX() + ";" + origine.getY() + ")");
}
Avatar
Bernard Koninckx
Je me demande même si dans certains cas il n'est pas mieux de retourner un
ArrayList oiu un Vector qui sont un peu les pendants des tableaux mais
dynamique.

Bernard

"Bernard Koninckx" a écrit dans le message de
news: 40c0521f$0$9748$
Dans le code A tu retourne bien une seule String. " x" + ... + "x"

Dans le code B ta fonction s'attend a retourner un tableau de chaîne et
non

une String.
Donc si tu renvoie ta String fromatée comme elle est ton valeur de retour
est forcément pas appropriée.
Par contre si tu avais écrit:
return {"x" + ... + "x"};
Cela devrait fonctionner puisque c'est un tableau. Je n'ai pas testé celà
... mais tu peux toujours essayer.

Les tableaux de valeurs sont a utiliser si tu veux retourner plus d'une
valeur du même type ou même de types différents si ton tableau de valeurs
est du type Object; pourquoi s'ennuyer a complexifier le code si tu
cherche

a retourner une seule valeur. Autant utiliser le type générique de base.

En espérant avoir répondu à ta question.

Bernard


"Latyr_Dev" a écrit dans le message
de

news:
Bonjour

J'ai de nouveau une question qui paraitra stupide à bien d'entre vous
mais hélas la réponse n'est pas triviale pour moi.

Pourquoi le CODE A est il correct et pas le CODE B ?
Est il possible d'utiliser String[] dans un tel cas est si oui comment
adapter mon return ?

De manière générale quand dois je utiliser String et quand String[] ?


Merci d'avance.

Latyr


/** CODE A **/
public String getOrigine() {
return ("(" + origine.getX() + ";" + origine.getY() + ")");
}

/** CODE B **/
public String[] getOrigine() {
return ("(" + origine.getX() + ";" + origine.getY() + ")");
}




Avatar
Latyr_Dev
Merci pour toutes ces explications.

A ma prochaine question. ;-)

Latyr
Avatar
Bernard Koninckx
C'est avec plaisir que je te donnes un coup de main.
Je suis moi même débutant, ... mais j'ai déjà eu l'occasion de me poser
toutes ces questions.

Bernard


"Latyr_Dev" a écrit dans le message de
news:
Merci pour toutes ces explications.

A ma prochaine question. ;-)

Latyr