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

Java énumérations

lucas-x-ray2
lucas-x-ray2
Niveau 8
19 avril 2017 à 14:48:39

Bonjour.

J'ai une question.

Je dispose d'une énumération appelée Nature.
Dans ma classe Cadeau je crée un attribut de la classe Nature nommé nature:

Dans le constructeur de Cadeau je fais un this.nature = this.nature.déterminer nature()

Je crée l'accesseur sur l'attribut.

Et dans une autre classe je fais:
if(this.cadeau.getNature.equals(Nature.EMPOISONNE) {}

Cela compile mais quand dans le jeu je me déplace sur un cadeau, cette ligne la me met un nullPointerException.

Je ne sais pas pourquoi ni si je peux faire ça .

Je ne sais pas si je suis assez clair ... :/

Pouvez vous m'aider svp ?

Merci d'avance et bonne journée :)

Bartoniz
Bartoniz
Niveau 9
19 avril 2017 à 15:10:31

Faudrait que tu mettes du code pour qu'on comprenne mieux :ok:

TheRealMarco
TheRealMarco
Niveau 13
19 avril 2017 à 15:25:46

A priori je dirai que getNature ne retourne rien, essaie de l'appeler directement pour voir si tu as une erreur :ok:

Peut-être que this.nature.déterminer nature() ne gère pas tous les cas ?

lucas-x-ray2
lucas-x-ray2
Niveau 8
19 avril 2017 à 17:52:28

Merci de vos réponses ! Voila le code en question:

https://image.noelshack.com/fichiers/2017/16/1492617082-2017-04-19-2.png

https://image.noelshack.com/fichiers/2017/16/1492617097-2017-04-19-1.png

Je vais essayer getNature().

lucas-x-ray2
lucas-x-ray2
Niveau 8
19 avril 2017 à 18:37:04

Effectivement quand j'utilise getNature() ça me renvoie un nullPointerException.
Comment puis-je faire pour y remédier svp ?

HowItWorks
HowItWorks
Niveau 10
19 avril 2017 à 20:31:13

https://pastebin.com

lucas-x-ray2
lucas-x-ray2
Niveau 8
20 avril 2017 à 11:34:12

J'ai déjà utilisé des captures d'écran pour montrer le code. Pourquoi utiliser pastebin ?

lokilok
lokilok
Niveau 16
20 avril 2017 à 15:29:42

https://image.noelshack.com/fichiers/2017/16/1492694960-reponse.png

Bunyan
Bunyan
Niveau 17
20 avril 2017 à 15:34:42

Avantages de pastebin (et simplement d'un putain de copier/coller de code) par rapport à une capture d'écran :
- plus rapide pour le posteur
- peut être retravaillé par les bénévoles qui te répondent
- peut servir à d'autres personnes plus facilement
- permet de faire des copiers/collers dans un IDE pour avoir la mise en forme, aide, coloration...

lucas-x-ray2
lucas-x-ray2
Niveau 8
20 avril 2017 à 19:52:15

Ah ok. La prochaine fois j'utiliserais pastebin.

Mais sinon est-ce que je peux faire ça:

this.nature = Nature.EMPOISONNE ?

Car quand je fais un return de l'attribut, ça me met un nullPointerException.

HowItWorks
HowItWorks
Niveau 10
20 avril 2017 à 21:08:44

Mets ton code sur pastebin, j'y jetterai un coup d'oeil demain.
Un NPE c'est assez explicite comme erreur, ça veut juste dire que tu essaies d'invoquer des méthodes (ou d'accéder à des attributs) sur un objet null.

lucas-x-ray2
lucas-x-ray2
Niveau 8
20 avril 2017 à 22:50:38

https://pastebin.com/u/Naoyoshi2

Le problème se situe dans la classe Plateau à la ligne 112.

Message édité le 20 avril 2017 à 22:51:30 par lucas-x-ray2
Thars
Thars
Niveau 10
20 avril 2017 à 22:59:34

Tu mets l'objet à null à la ligne 111...

Bunyan
Bunyan
Niveau 17
21 avril 2017 à 08:18:54

Si je lis ton code :


                if(this.cadeaux[click.getX()][click.getY()] != null)  {
                    this.cadeaux[click.getX()] [click.getY()].erase();
                    this.cadeaux[click.getX()] [click.getY()] = null;
                    if(this.cadeaux[click.getX()][click.getY()].getNature().equals(Nature.EMPOISONNE)) {
                        this.deplacementsRestants -= 2;
                    }
                    else {
                        this.deplacementsRestants += 3;
                    }
                    this.nombreCadeaux--;
 
                    System.out.println("Nombre coups " + this.nombreCoups + "Cadeaux " + this.nombreCadeaux + "Deplacements restants" + this.deplacementsRestants);
                }

Cela donne :


Si le cadeau en X, Y existe
    je le détruis
    je détruis sa référence
    Si la nature du cadeau en X, Y est empoisonnée <= Tu viens de le détruire, il est donc normal que ça plante :)
lucas-x-ray2
lucas-x-ray2
Niveau 8
21 avril 2017 à 12:07:09

Merci beaucoup ! Ça fonctionne ! Et dire que l'erreur venait juste de l'ordre d'exécution...

En tout cas merci beaucoup ! :) :ok:

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