Demande d'explicat d'une instruction java!!!

Résolu/Fermé
kazis - 17 avril 2009 à 17:30
 Utilisateur anonyme - 29 avril 2009 à 18:31
Bonjour,
je voudrais savoir ce que ça veut bien signifier ce bout de code java,la premiére est une affectation du resultat d'une methode length() à une cariable de type double "len",la secone est aussi une affectation à la même variable :s mais ce qui suit càd ""(len>MINLEN) ? len : MINLEN;"" je comprends pas du tout c'est nouveau pour moi,est ce que cette notation a un nom,....et que peut elle bien signifier:

double len = length();
len = (len >= MINLEN) ? len : MINLEN;


Merci pour votre aide.
A voir également:

4 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
17 avril 2009 à 17:50
c'est une notation de test
si (len >= MINLEN) alors len sera egal a len sinon len sera egal a MINLEN
1
si je comprend bien ça veut dire:

if(len>=MINLEN)
{len=len;} //quelle est l'utilité de cette instruction?
else
{len=MINLEN;}

Donc si je comprend bien ça veut dire qu'on va attribuer à len la valeur minimale,mais pourquoi n'écrit t-on pas tout simplement,

if(len<MINLEN)
len=MINLEN; //et puis c'est tout :s


Merci pour votre aide :)
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
17 avril 2009 à 18:20
oui c'est equivalent a
if(len<MINLEN) 
len=MINLEN;

apres pourquoi le programmeur a choisi cette notation... je sais pas c'est un choix de sa part c'est tout
1
Merci beaucoup :)
0
Utilisateur anonyme
17 avril 2009 à 19:18
Salut,

-Désolé, mais
double len = length(); ne veut rien dire.
length() ne s'applique qu'à un String et permet d'obtenir la longueur d'un objet String.

Exemple:
String toto = "Bonjour,";
int len = toto.length();
System.out.println("len = " + len + "\n");
et donnera len = 8

-len = (len >= MINLEN) ? len : MINLEN;
Ici on a certainement voulu contrôler que len est bien supérieure ou égale à la valeur contenue dans MINLEN, mais encore une fois c'est faut.

Exemple avec le résultat obtenu ci-dessus:

int minlen = 5; // je préfère minlen à MINLEN
System.out.println("Avec minlen = " + minlen + "\n");
if (len >= minlen)
System.out.println("len " + len + "est bien > ou = à " + minlen + " C'est bon !!!\n");

Par contre si on avait:
minlen = 10;
System.out.println("Avec minlen = " + minlen + "\n");
if (len >= minlen)
System.out.println("len = " + len + "est < à " + minlen + " C'est faux !!!")

Cordialement,

Dan
0
Bonjour,
c'est vrai que length() est une méthode prédéfinie et qui permet de donner la longueur d'une chaine de caractères dans le cadre d'une instance d'un objet de type String,sauf que de dans le cas présent,le length() est une méthode définie par le programmeur au niveau de la même classe où se trouve le code pré-cité et qui permet de retourner une distance euclidienne.
encore une question qui se pose: ne devrait on pas précédé length(),par une instance de l'objet,en l'occurence,un this par exemple?(de la maniéré suivante:this.length())!!!
Respectueusement,
KAZIS.
0
Utilisateur anonyme
29 avril 2009 à 18:31
Salut,
Pour ceux qui voudraient plus d'infos sur l'utilisation de cette "notation" je propose cet exemple plus parlant:

J'ai par exemple un nombre de jours dans int nbJours et je veux afficher par exemple:

Dans 25 jours je serai en vacances ou Dans 1 jour je serai en vacances (avec le "s" éventuel).

int nbJours = 25;
String str = "Dans " + nbJours + " jour" + (nbJours<2?"":"s") + " je serai en vacances";
System.out.println(str);

nbJours = 1;
str = "Dans " + nbJours + " jour" + (nbJours<2?"":"s") + " je serai en vacances";
System.out.println(str);

Comment interpréter (nbJours<2?"":"s"):

si nbjours est <2 (le ?)
"" on n'ajoute rien à " jour"
sinon (le :)
"s" on ajoute s à " jour"

On pouvait aussi utiliser (nbJours>1?"s":"")

Cordialement,

Dan
0