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 mon code java

LeBiZouZ
LeBiZouZ
Niveau 5
14 décembre 2015 à 15:26:17

Bonjour, j'ai un petit problème avec mon code Java (débutant)

class Pers
{ 
	 private String date ; // format "jj/mm/aaaa", ex : "25/12/1993"
	 private int cafe ;


   public Pers(String dat, int caf)
   { date = dat;
     cafe = caf;
   }

   public Pers(String dat)
   {
   	date = dat;
   	cafe = 3;
   }

   public Pers(int caf)
   {
   	 cafe = caf;
   	 date = "17/12/1990";
   }

   public String getMois()
   {
   	String[] nomMois = {"janvier", "f?vrier", "mars", "avril",
   	  "mai", "juin", "juillet", "aout", "septembre",
   	  "octobre", "novembre", "d?cembre"	};
   	int indMois = Integer.parseInt(date.substring(3,5))%50 - 1;
   	return nomMois[indMois];
   }

   public void afficher(String message)
   {
   	System.out.printf("%s n?(e)le %s ", message,
   	        date.substring(1,3));
   	System.out.printf("%s ", getMois());
   	System.out.printf("19%s consomme %.1d tasse(s) de café\n",
   	           cafe);
   }

   public String getDat()
   {
   	return date;
   }
   public int getCafe()
   {
   	 return cafe;
   }

   public void setCafe(int nouvCaf)
   {
   	 cafe = nouvCaf;
   }

}// fin personne

public class TP3D {

    static void afficher(Pers[] p, int nbPers)
    {
      System.out.printf("Contenu du tableau des personnes :\n");
      for(int i = 0; i < nbPers; i++)
    	  System.out.printf("%3d) %15s %10.1d\n", i, p[i].getDat(), p[i].getCafe());
      System.out.printf("\n\n");
    }
}








		
    


	public static void main(String[] args) {

    	   Pers p1 = new Pers("19/11/1995", 3),
    	            p2 = new Pers("17/12/1990"),// par défaut 0 tasse de café
    	            p3 = new Pers("12/11/1991"),
    	            p4 = new Pers("30/09/1991"),
    	            p5 = new Pers("19/10/1994", 7);

       p1.afficher("Infos de p1 : ");
       p1.setCafe(p1.getCafe() -1);
       p1.afficher("Nouvelle conso cafe p1 : ");
       
       p2.afficher("Infos de p2 : ");
       p3.afficher("Infos de p3 : ");
       p4.afficher("Infos de p4 : ");

       p5.afficher("Infos de p5 : ");
       p5.setCafe(p5.getCafe() -1);
       p5.afficher("Nouvelle conso cafe p5 : ");

       

       Pers[] p = { new Pers("19/11/1995", 3),
    		   new Pers("17/12/1990"),
    		   new Pers("12/11/1991"),
    		   new Pers("30/09/1991"),
    		   new Pers("19/10/1994", 7);
       
       
          
       int nbPers = p.length;
      
       TP3D.afficher(Pers, nbPers);
       
    

       

    }

Ligne 112 TP3D.afficher(Pers, nbPers); on me dit comme erreur : Description Resource Path Location Type Pers cannot be resolved to a variable TP3D.java /TP3D/src line 112 Java Problem

Ainsi que divers problèmes de syntaxes, que ne pige pas :(

Pouvez vous m'aider ?

Merci !

Bunyan
Bunyan
Niveau 17
14 décembre 2015 à 15:43:15

Normal :
- tu ne possède aucune variable nommée "Pers"
- ton tableau n'est pas fermé que tu crées des variables et invoques des méthodes

Outre ça :
Pourquoi n'utilises-tu pas un objet Date ? Ou mieux, LocalDate ?
Pourquoi tes variables sont-elles si mal nommées ? p1, p2...
Pourquoi autant de sauts de lignes ?
Pourquoi est-ce que 'afficher' de la classe TD3 est static ? "Parce que Eclipse me le demande" n'est pas une réponse acceptable :)

Tu viens tout juste de commencer à apprendre la programmation ? :)

LeBiZouZ
LeBiZouZ
Niveau 5
14 décembre 2015 à 15:47:05

J'ai fais plus d'un mois de C et la je viens de débuer le Java !

Merci je vais essayer de voir ça !

Bunyan
Bunyan
Niveau 17
14 décembre 2015 à 15:48:14

Ca explique la déclaration chaînée de variables.
Bon ben... attends-toi à te prendre une bonne baffe dû au choc de langage ^^'

LeBiZouZ
LeBiZouZ
Niveau 5
14 décembre 2015 à 20:13:24

Salut, alors j'ai corrigé mon code et ca donne :

class Pers
{ 
	 private String date ; // format "jj/mm/aaaa", ex : "25/12/1993"
	 private int cafe ;


   public Pers(String dat, int caf)
   { date = dat;
     cafe = caf;
   }

   public Pers(String dat)
   {
   	date = dat;
   	cafe = 3;
   }

   public Pers(int caf)
   {
   	 cafe = caf;
   	 date = "17/12/1990";
   }

   public String getMois()
   {
   	String[] nomMois = {"janvier", "f?vrier", "mars", "avril",
   	  "mai", "juin", "juillet", "aout", "septembre",
   	  "octobre", "novembre", "d?cembre"	};
   	int indMois = Integer.parseInt(date.substring(3,5))%50 - 1;
   	return nomMois[indMois];
   }

   public void afficher(String message)
   {
   	System.out.printf("%s n?(e)le %s ", message,
   	        date.substring(1,3));
   	System.out.printf("%s ", getMois());
   	System.out.printf("19%s consomme %.1d tasse(s) de café\n",
   	           cafe);
   }

   public String getDat()
   {
   	return date;
   }
   public int getCafe()
   {
   	 return cafe;
   }

   public void setCafe(int nouvCaf)
   {
   	 cafe = nouvCaf;
   }

}// fin personne

public class TP3D1 {

	int cafe, pers, nbPers ;
	


    static void afficher(Pers[] p, int nbPers)
    {
      System.out.printf("Contenu du tableau des personnes :\n");
      for(int i = 0; i < nbPers; i++)
    	  System.out.printf("%3d) %15s %10.1d\n", i, p[i].getDat(), p[i].getCafe());
      System.out.printf("\n\n");
    }
    


	



	public static void main(String[] args) {

    	   Pers p1 = new Pers("19/11/1995", 3),
    	            p2 = new Pers("17/12/1990"),// par défaut 0 tasse de café
    	            p3 = new Pers("12/11/1991"),
    	            p4 = new Pers("30/09/1991"),
    	            p5 = new Pers("19/10/1994", 7);

       p1.afficher("Infos de p1 : ");
       p1.setCafe(p1.getCafe() -1);
       p1.afficher("Nouvelle conso cafe p1 : ");
       
       p2.afficher("Infos de p2 : ");
       p3.afficher("Infos de p3 : ");
       p4.afficher("Infos de p4 : ");

       p5.afficher("Infos de p5 : ");
       p5.setCafe(p5.getCafe() -1);
       p5.afficher("Nouvelle conso cafe p5 : ");

       

       Pers[] p = { new Pers("19/11/1995", 3),
    		   new Pers("17/12/1990"),
    		   new Pers("12/11/1991"),
    		   new Pers("30/09/1991"),
    		   new Pers("19/10/1994", 7)};
       
       
          
       int nbPers = p.length;
      
       TP3D1.afficher(p, nbPers);
       
    
       
       
	}
    }

Le code ne comporte pas d'erreur, il affiche la premiere information, et apres j'ai un truc chelou, voici le C/C de l'exec :
Infos de p1 : n?(e)le 9/ novembre ''Exception in thread "main" java.util.IllegalFormatPrecisionException: 1 at java.util.Formatter$FormatSpecifier.checkInteger(Unknown Source) at java.util.Formatter$FormatSpecifier.<init>(Unknown Source) at java.util.Formatter.parse(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.io.PrintStream.format(Unknown Source) at java.io.PrintStream.printf(Unknown Source) at Pers.afficher(TP3D1.java:38) at TP3D1.main(TP3D1.java:86) ''

labitedeflamby
labitedeflamby
Niveau 10
14 décembre 2015 à 20:45:23

erreur à la ligne 38 dans un printf, y a un truc qui va pas avec les arguments donnés au printf
at java.io.PrintStream.printf(Unknown Source) at Pers.afficher(TP3D1.java:38)

je sais pas ou est ta ligne 38 mais

System.out.printf("19%s consomme %.1d tasse(s) de café\n", cafe);

c'est pas ça le problème ? il manque un argument

LeBiZouZ
LeBiZouZ
Niveau 5
14 décembre 2015 à 20:52:30

Oui le problème vient de cette ligne, je ne vois pas quel argument il manque :( j'ai calé le .1 avant le %d, mais toujours le même problème :(

LeBiZouZ
LeBiZouZ
Niveau 5
14 décembre 2015 à 20:57:18

En effet, je suis bête, il manquait l'argument date !

Merci à toi :)

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