Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1704 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  problème attributs

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème attributs

n°2145186
lozyne
Posté le 08-06-2012 à 23:20:51  profilanswer
 

Bonjour,
 
J'ai un souci sur mon code qui affiche:
 
Exception in thread "main" java.lang.NullPointerException
 at java.io.Writer.write(Unknown Source)
 at java.io.PrintStream.write(Unknown Source)
 at java.io.PrintStream.print(Unknown Source)
 at java.io.PrintStream.println(Unknown Source)
 at Combat.ChangerCap(Combat.java:141)
 at TestCombat.main(TestCombat.java:8)
 
je sais que c'est une histoire de valeur null dans la méthode ChoisirCap() que je n'arrive pas à résoudre.
 
J'aimerai savoir comment faire pour récupérer mes attributs de choisirCap avec leur propre valeur (j'ai aussi une classe enum composer de caps, d'où le tableau)
 
 
 
 

Code :
  1. import java.util.Scanner;
  2. import java.util.Random;
  3. public class Combat {
  4.       public SousMarin Realiser;
  5. private Object CapInitial;
  6. private Object nbrAl;
  7.      
  8.      
  9.       public void TirerTorpille() {
  10.       
  11.       
  12.  
  13.  
  14.  
  15.   }
  16.   public void Sonder() {
  17.    }
  18.   public void CommencerCombat() {
  19.   System.out.println("Le combat commence!\n\n Vous recevez 20 points de vie" );
  20.  
  21.  
  22.  
  23.   /*Le cap est tiré aléatoirement*/
  24.   }
  25.   public void ChoisirActionCombattre() {
  26.   System.out.println("Choisissez l'action à réaliser" );
  27.  
  28.   System.out.println("1- Tirer Torpille\n 2-Sonder\n 3-Changer de Cap\n 4-Capituler" );
  29.  
  30.   Scanner sc = new Scanner(System.in);
  31.  
  32.  
  33.   int choix = sc.nextInt();
  34.  
  35.   if(choix==1){
  36.    System.out.println("Tirer la torpille" );
  37.    TirerTorpille();
  38.   }
  39.  
  40.   else if(choix==2){
  41.    System.out.println("\nSonder" );
  42.    Sonder();
  43.   }
  44.  
  45.   else if(choix==3){
  46.    System.out.println("\nChanger de Cap" );
  47.    ChangerCap();
  48.   }
  49.  
  50.   else{
  51.    System.out.println("\nCapituler" );
  52.   }
  53.  
  54.  
  55.  
  56.   }
  57.   public void MenuCombattre() throws Exception {
  58.   /*Menu du combat*/
  59.   System.out.println("MENU COMBATTRE" );
  60.  
  61.   System.out.println("Voulez-vous démarrer le combat?" );
  62.  
  63.   System.out.println("Si oui, tapez 1 si non tapez 2\n" );
  64.  
  65.   Scanner s= new Scanner(System.in);
  66.   int choix;
  67.   choix=s.nextInt();
  68.  
  69.   if(choix==1){
  70.    CommencerCombat();
  71.   }
  72.  
  73.   else{
  74.    Partie p= new Partie();
  75.    p.AfficherMenuPrincipal();
  76.   }
  77.  
  78.  
  79.   }
  80.   public void Capituler() {
  81.   }
  82. public void ChoisirCap(){
  83.   
  84.   
  85.    Random r = new Random();
  86.    int nbrAl = r.nextInt(8);
  87.    Cap[] valeur = Cap.values();
  88.    Cap CapInitial =  valeur[nbrAl];
  89.    System.out.println("Votre cap de départ est: " );
  90.    System.out.println( CapInitial);
  91.   }
  92.   public void ChangerCap() {
  93.  
  94.  
  95.  /**
  96.   * Si on change de cap on bouge de 45°.
  97.   *  
  98.   */  Combat j=new Combat();
  99.     j.ChoisirCap();
  100.                                Cap CapInitial= int valeur[i+1];
  101.  System.out.println(CapInitial);
  102. //System.out.println(i);
  103.   }
  104.   public void AfficherMenuCombattre() {
  105.  
  106.  
  107.   }
  108. }

mood
Publicité
Posté le 08-06-2012 à 23:20:51  profilanswer
 

n°2145257
smillot
Posté le 10-06-2012 à 13:44:23  profilanswer
 

Bonjour,
 
Première chose, merci pour la stack trace, par contre faites attention le numéro de ligne indiqué dans la stacktrace n'est pas compatible avec le listing de votre code!
 
Malgré ça je vous répond sans vous donnez directement la bonne réponse que je n'ai pas.
 
On commence par les attributs, à moins que celà soit absolument nécessaire ne créez jamais d'objet avec le type Object!
 

Code :
  1. private Object CapInitial;
  2. private Object nbrAl;


 
non!
 
À la place préférez un type explicite (int, String, MonObject, ...), qui vous aidera vous, le lecteur mais aussi votre IDE/compilateur! (tout le monde quoi!)
 
Ensuite pensez à respecter les conventions Java en utilisant la camel case.
 
Les attributs commencent avec une minuscule tout comme le nom des méthodes!
 
Dans votre méthode "ChangerCap" pourquoi créez vous un nouvel objet "Combat"? vous êtes déjà dans un objet "Combat".
 
Le problème que j'identifie est que dans "ChangerCap" vous instanciez un objet "Combat", vous appellez la méthode "ChoisirCap" sur cette instance, et de retour dans "ChangerCap" vous lisez l'attribut de l'instance courrante et non de l'instance créée.
 
Un code un peu trop confus,
 
Bon courage tout de même!
 
Cordialement,
 
Sébastien Millot


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  problème attributs

 

Sujets relatifs
[BATCH] xcopy problème avec /D sur réseauProblème d'asynchronicité avec Node.js et Async.js
Problème d'accès dll VBA/Excelnetbeans - probléme
[Résolu] Problème positionnement d'une note avec "vertical-align: top"flash cs5.5 chrono probleme
[AC 2003] Probleme d'ouverture après modification de droitsprobléme récéption données java socket
(CSS) Problème avec sélecteurs d'attributs sur IEProblème lors de l'upload, il me trouve pas d'attributs snifff
Plus de sujets relatifs à : problème attributs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR