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 avec un programme java

tomtex
tomtex
Niveau 8
16 décembre 2008 à 17:40:28

salut, alors voilà, il faut créer une méthode qui crée un paquet de carte mélangé à partir de la classe carte.

donc voilà le programme que j'ai fait :

// type carte :
public class Carte{
int couleur ;
int valeur ;

public static void main (String args[]){
// création et initialisation paquet de carte :
Carte []jeu=new Carte[52] ;
for (int i=0 ; i<52 ;i++){
jeu[i].couleur=99 ;
jeu[i].valeur=99 ;
}
// création et initialisation tableau de booléen :
boolean []tab=new boolean[52] ;
for (int i=0 ; i<52 ; i++)
tab[i]=true ;
// cr"ation du paquet de carte mélangé :
for(int c=0 ; c<4 ; c++){
for(int v=0 ; v<13 ; v++){
int cpt=(int)(Math.random()*52) ;
while(tab[cpt]==false)
cpt=(int)(Math.random()*52) ;
tab[cpt]=false ;
jeu[cpt].couleur=c ;
jeu[cpt].valeur=v ;

}
}
// affichage tableau de booleen + paquet de carte :
for (int i=0 ; i<52 ; i++)
System.out.print(tab[i]+" ") ;
System.out.print("\n") ;
for (int i=0 ; i<52 ; i++)
System.out.print(jeu[i].couleur+" "+jeu[i].valeur+"\n") ;
}

}

le progamme compile, mais à l'exécution il me dit qu'il y a une erreur à la ligne où il y a jeu[i].couleur=99 ; (après plusieurs essais, le problème n'est pas seulement là, mais à tout les endroits jeu[_]._______).

donc si quelqu'un a une solution :)

merci :ok:

dnob700
dnob700
Niveau 10
16 décembre 2008 à 20:17:28

Je ne connais pas du tout java et je suis assez mauvais en POO, mais il me semble étrange que la fonction main soit dans la classe Carte. Vu que la fonction main, va manipuler des cartes, je dirais qu'elle doit être extérieur, avec par exemple une classe Programme qui contient la classe Carte ainsi que la fonction main.

Mais ça n'a peut-être rien à voir.

Quelle est l'erreur que tu obtiens (il faudrait commencer par ça en fait, tout le monde perd du temps si tu rapporte une erreur sans préciser laquelle).

tomtex
tomtex
Niveau 8
16 décembre 2008 à 21:12:11

salut et merci pour ton aide :)

alors j'ai essayé de mettre dans une autre classe et même problème.

donc voilà ce que marque le compilateur :
Exception in thread "main" java.lang.NullPointerException
at Programme.main(Programme.java:6)
ce qui correspondant à jeu[i].couleur=99 ;

Nerro
Nerro
Niveau 10
16 décembre 2008 à 21:13:00

Je confirme, faut sortir ton main de là...

tomtex
tomtex
Niveau 8
16 décembre 2008 à 21:30:53

oui je l'ai mis dans une autre classe :
en gros sa me donne :

class Carte{
...
}

class Programme{
public static void main (String args[]){
...
}

dans deux fichiers différents, mais le problème est toujours là (voir mon précédent post :ok: ).

Thicot
Thicot
Niveau 10
16 décembre 2008 à 22:58:03

Tu initialises bien ton tableau mais pas l'objet Carte qu'il y a dedans. Erreur classique dans la création de Tableaux d'objet en Java.

Il manque le jeu[i] = new Carte(); :ok:

tomtex
tomtex
Niveau 8
17 décembre 2008 à 08:40:43

a ouais exact, je me souviens maintenant, merci beaucoup :ok: :content:

guyver2
guyver2
Niveau 10
17 décembre 2008 à 08:45:08

pour dnob et Nerro :
En java la fonction main peut se trouver dans une classe sans aucun problème. Il peut même y avoir plusieurs fonctions main distinctes.

Java sait laquelle lancer car quand on lance un programme on utilise la syntaxe suivante :
$java MaClasse
ainsi si la classe "MaClasse" contient une fonction main alors c'est celle ci qui sera lancée même si cette classe utilise d'autres classes contenant leur propres fonctions main.
Je sais pas si c'est très clairement expliqué mais c'est un mécanisme assez pratique puisqu'il permet de mettre des mini programmes dans chaque classe ; pour tester si elle fonctionnent bien par exemple.

dnob700
dnob700
Niveau 10
18 décembre 2008 à 00:05:12

certes, mais ma question était de savoir si intégrer la fonction main une classe qui est une classe utilitaire pour cette fonction est une bonne pratique. Surtout que dans l'exemple donné, la fonction main est une fonction "static" pour la classe (au sens du C++) car elle n'utilise pas l'instance de Carte dont elle fait partie.

guyver2
guyver2
Niveau 10
18 décembre 2008 à 01:23:44

je ne sais pas si c'est une "bonne" pratique mais en tout cas ça marche ;)

godrik
godrik
Niveau 30
18 décembre 2008 à 08:46:32

C'est assez standard comme approche.
Je décalerais main dans une autre classe. Encore plus si main utilisait des variables static.

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