Bonsoir,
Je voudrais écrire un programme qui demande à l’ utilisateur de saisir un mois et une année. Puis le programme affiche le nombre de jours de ce mois.
Version imprimable
Bonsoir,
Je voudrais écrire un programme qui demande à l’ utilisateur de saisir un mois et une année. Puis le programme affiche le nombre de jours de ce mois.
Bonjour,
La librairie Calendar, est un bon début.
http://docs.oracle.com/javase/7/docs.../Calendar.html
Cordialement
Salut,
Très bien, et, donc, quels problèmes rencontres-tu pour réaliser ce programme ?
Si c'est our la saisie, regarde la classe Scanner. Pour le reste, tout dépend ce que tu peux utiliser ou pas : à la base, il n'y a que des calculs à faire (1 mois sur 2 à 30 jours ou 31 jours, sauf le mois de février qui en a 28, ou 29, les années bissextiles (quelques calculs et tests sur l'année pour le savoir). Si tu peux utiliser des classes toutes faites de Java, les classes Calendar ou LocalDate Month et Year pourront t'aider.
Si tu es en java 8 et que tu t'en fous de ce qui se passait avant 1920 en Russie, java.time a déjà tout ce qu'il faut:
par exempleCode:
1
2
3
4 import java.time.*; int mois = ....; int anneee = ....; Month.of(mois).getLength(Year.isLeap(annee));
salut,
n´est pas plutot :Citation:
Month.of(mois).getLength(Year.isLeap(annee));
EricCitation:
Month.of(mois).length(Year.isLeap(annee))
oui :)
Bonjour,
moi j'ai ca en 1.7 :
Code:
1
2
3
4
5
6 int annee = ...; int mois = ... ; Calendar cal = Calendar.getInstance() ; cal.set(annee, mois-1 /* -1 car mois vont de 0 à 11 */ , 1) ; cal.getActualMaximum(Calendar.DAY_OF_MONTH);
Voici mon programme java. Corrigez-moi.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package com.iam.EXO15; import java.time.*; import java.util.Scanner; public class Nbre_d_jr_du_mw { /** * @param args * @param Year */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner ok = new Scanner(System.in); System.out.println("veiller saisir le mois"); String mois = ok.nextLine(); int i = Integer.parseInt(mois); System.out.println("veiller saisir l'annee"); String annee = ok.nextLine(); int j = Integer.parseInt(annee); System.out.println(Month.of(i).getLength(Year.isLeap(j))); } }
salut,
une petite modification:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class Nbre_d_jr_du_mw { /** * @param args * @param Year */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner ok = new Scanner(System.in); System.out.println("veiller saisir le mois"); String mois = ok.nextLine(); int i = Integer.parseInt(mois); System.out.println("veiller saisir l'annee"); String annee = ok.nextLine(); int j = Integer.parseInt(annee); System.out.println(Month.of(i).length(Year.isLeap(j))); } }
Moi j'aurais fait
Mais c'est juste parce que je trouve ça un peu plus direct.Code:YearMonth.of(year, month).lengthOfMonth()
Et pour info, il est possible d'appeler directement nextInt() sur un Scanner, au lieu de nextLine() suivi de Integer.parseInt().
(Du coup year, month et scanner seraient des noms de variables plus appropriés que j, i et ok.)
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Year cannot be resolved
at com.iam.EXO15.Nbre_d_jr_du_mw.main(Nbre_d_jr_du_mw.java:21)
Salut,
As-tu importé la classe java.time.Year (ou le package java.time.*) ?