CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

problème valeur de retour JAVA

Hyderman
Hyderman
Niveau 2
07 septembre 2018 à 12:14:16

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 ?

stacksmashing
stacksmashing
Niveau 6
07 septembre 2018 à 12:31:12

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.

Gleuh
Gleuh
Niveau 10
07 septembre 2018 à 12:34:31

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

Hyderman
Hyderman
Niveau 2
07 septembre 2018 à 12:45:31

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.

dechet_s0cial
dechet_s0cial
Niveau 10
07 septembre 2018 à 16:45:25

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

Pseudo supprimé
Pseudo supprimé 09 septembre 2018 à 21:44:16

on peut retouner null à la place d'un int ?????? https://image.noelshack.com/fichiers/2018/25/7/1529828225-1529674855-risiboulbe.png

godrik
godrik
Niveau 30
09 septembre 2018 à 22:48:16

Le 09 septembre 2018 à 21:44:16 TETSUYA_NOMURA a écrit :
on peut retouner null à la place d'un int ?????? https://image.noelshack.com/fichiers/2018/25/7/1529828225-1529674855-risiboulbe.png

null est une reference.
Non. si ta fonction renvoie un entier, alors elle renvoye un entier, pas une reference.

Pseudo supprimé
Pseudo supprimé 09 septembre 2018 à 23:48:15

une reference c'est un entier en quelque sorte

bon ok on est pas en C https://image.noelshack.com/fichiers/2017/40/2/1507052708-1488221600-dieu2.png

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 10:05:32

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.

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 12:39:00

J'ai pas compris ce que tu veux dire https://image.noelshack.com/fichiers/2017/13/1490886827-risibo.png

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.

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 14:10:00

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.

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 14:34:37

T'as pas fait d'assembleur ?

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 14:42:09

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.

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 15:48:21

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

Message édité le 10 septembre 2018 à 15:51:13 par Pseudo supprimé
Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 16:13:11

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).

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 17:35:36

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 .

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 17:46:53

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.

godrik
godrik
Niveau 30
10 septembre 2018 à 19:08:04

Le 09 septembre 2018 à 23:48:15 TETSUYA_NOMURA a écrit :
une reference c'est un entier en quelque sorte

bon 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.

Pseudo supprimé
Pseudo supprimé 10 septembre 2018 à 19:38:10

@godrik, si p et q sont deux pointeurs, ça veut dire quoi p+q ? Ce sera mon dernier post à ce sujet.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment