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

Résolu
kazis -  
 Utilisateur anonyme -
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   Statut Membre Dernière intervention   437
 
c'est une notation de test
si (len >= MINLEN) alors len sera egal a len sinon len sera egal a MINLEN
1
kazis
 
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   Statut Membre Dernière intervention   437
 
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
kazis
 
Merci beaucoup :)
0
Utilisateur anonyme
 
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
kazis
 
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
 
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