Bonjour,
Mon problème est dès que j'utilise une méthode qui contient un if et que je mets le return dans le if, j'ai un message d'erreur comme quoi la méthode doit renvoyer une valeur du type annoncé dans la méthode.
Pour prendre un exemple simple:
int x = 3;
int lala(){
if(x<4){
return x;
}
}
x étant un entier je ne devrais pas avoir de problème normalement ?
Le problème est que ta fonction actuelle ne renvoie rien si on ne passe pas dans le if. Tu dois renvoyer une valeur dans tous les cas.
Effectivement il faut que ta fonction retour une valeur dans tous les cas donc en dessous du if il faut que tu mettre un deuxième return qui retournera une valeur par défaut au cas où x n'est pas inférieur a 4
Merci pour vos réponses.
D'accord je comprends. Je viens de voir un exemple où après le if il est écrit return null.
avec ton code si la condition x<4 est false la méthode ne retourne rien,c'est pour ça que tu as une erreur
on peut retouner null à la place d'un int ?????? 
Le 09 septembre 2018 à 21:44:16 TETSUYA_NOMURA a écrit :
on peut retouner null à la place d'un int ??????
null est une reference.
Non. si ta fonction renvoie un entier, alors elle renvoye un entier, pas une reference.
une reference c'est un entier en quelque sorte
bon ok on est pas en C 
Le 09 septembre 2018 à 23:48:15 TETSUYA_NOMURA a écrit :
une reference c'est un entier en quelque sorte
Seulement si l'on confond interface et implémentation.
J'ai pas compris ce que tu veux dire
Moi je disait ça par rapport au fait qu'une référence c'est ni pus ni moins qu'une adresse mémoire(un pointeur) en C et donc un entier.
Des années que je fais du C et à aucun moment je ne considère qu'une étoile (un pointeur) soit un entier. Je n'ai jamais eu besoin de cette hypothèse. C'est un détail d'implémentation qui ne me regarde pas.
T'as pas fait d'assembleur ?
Même en asm (j'en ai fait) tu n'as pas besoin de cette hypothèse. Je vais me répéter
Seulement si l'on confond interface et implémentation.
C'est pourtant essentiel pour comprendre comment marche l'arithmétique des pointeurs.
Et c'est pas une hypothèse comme tu dis mais c'est un fait. C'est pour ça qu'on peut pas avoir plus de 4 giga de RAM sur un processeur avec un jeu d'instruction x86 entre autres
C'est pourtant essentiel pour comprendre comment marche l'arithmétique des pointeurs.
Non seulement pour comprendre comment marche les offsets/indices dans un tableau. Mais que l'adresse de base de ton tableau soit un entier n'a aucune importance.
Et c'est pas une hypothèse comme tu dis mais c'est un fait.
Tu confonds implémentation et interface (et en plus tu te trompes voir réponse après), encore une fois. Je peux te fabriquer une implémentation ou tes pointeurs ne seront absolument pas des entiers mais des types abstraits et cela continuera de marcher (tes indices restent entier bien-sûr).
C'est pour ça qu'on peut pas avoir plus de 4 giga de RAM sur un processeur avec un jeu d'instruction x86
Malheureusement c'est une fausse croyance. https://en.wikipedia.org/wiki/Physical_Address_Extension Ce qui fait que concrètement (et là je parle d'implémentation, plus d'interface) un pointeur est un segment (entier) plus un offset dans ce segment (deuxième entier). Ce qui fait que concrètement un pointeur sur un 386 n'est pas un entier (il y a des modes où ça peut l'être, cela dépend du réglage) mais un couple d'entier. Tu ne t'es pas rendu compte que tu ne voyais qu'une interface (un entier) alors que derrière tu avais une implémentation différente (deux entiers).
Tu répond à côté, je te parle d’arithmétique des pointeurs et toi tu me parle d'indice de tableau
Je comprend toujours par pourquoi tu me parle d'interface, les adresse ont toujours étaient des entier que ce soit les adresses logique ou physique. On est sur un topic Java je te signal, tu me dis interface moi je pense à classe "virtuel pure".
https://en.wikipedia.org/wiki/Memory_address
In computing, a memory address is a reference to a specific memory location used at various levels by software and hardware. Memory addresses are fixed-length sequences of digits conventionally displayed and manipulated as unsigned integers.
Et après ton explication fumeuse ... heu ..? ok ? entier + entier = ??
Je crois qu'on va s'arrêter la parce que tu veux juste me contredire pour rien en fait .
Tu répond à côté, je te parle d’arithmétique des pointeurs et toi tu me parle d'indice de tableau
C'est la même chose. Je tiens à te rappeler que le standard C dit que a[i] est équivalent à *(a+i). Donc c'est la même chose (oui je me répète).
Je comprend toujours par pourquoi tu me parle d'interface, les adresse ont toujours étaient des entier que ce soit les adresses logique ou physique.
OK, on tourne en rond.
Memory addresses are fixed-length sequences of digits conventionally displayed and manipulated as unsigned integers.
Il parle de l'implémenta... Dis donc ça tourne en rond cette conversation.
Je crois qu'on va s'arrêter la
Oui on va arrêter là. On perd tous les deux notre temps. Désolé. Dans une autre vie peut-être.
Le 09 septembre 2018 à 23:48:15 TETSUYA_NOMURA a écrit :
une reference c'est un entier en quelque sortebon ok on est pas en C
En Java une reference n'est absolument pas la meme chose qu'un entier. Je ne sais meme pas exactement ce que le langage garantie sur les references. Mais a part que ca a un type et que tu peux le dereference et mettre une autre address du meme type dedans, je pense que ca ne garantie rien.
Le 10 septembre 2018 à 14:10:00 SithisMinion a écrit :
Des années que je fais du C et à aucun moment je ne considère qu'une étoile (un pointeur) soit un entier. Je n'ai jamais eu besoin de cette hypothèse. C'est un détail d'implémentation qui ne me regarde pas.
Note que ce n'est pas completement vrai. Tu utilises certainement le fait qu'un pointeur a quasiment une arithmetique d'entier.
Tu es sur un corps fini.
Tu as un element nul : p+0 == p
C'est commutatif: p+x == x+p
L'addition a un inverse p+x-x == p
C'est associatif (p+x)+y == p+(x+y)
Il faut faire attention a la multiplication a cause des types. Mais ca se comporte quand meme relativement comme un entier.
@godrik, si p et q sont deux pointeurs, ça veut dire quoi p+q ? Ce sera mon dernier post à ce sujet.