JAVA année 2017
CP 2 – série n°2
Exercices sur les méthodes statiques et les tableaux
En JAVA une fonction est une méthode STATIC.
La signature d'une méthode static en java est la suivante :
public static typeDuRésultat NomDeLaMéthode (liste des paramètres)
{
déclarations de variables (locales à cette méthode)
instructions de résolution du probléme
retourne valeurRésultat; //au moins 1 fois
}
La méthode est dite « static » car elle ne s'applique pas sur des objets. Les méthodes static ne sont
pas les méthodes les plus utilisées en Java. Les méthodes static sont souvent utilisées comme des
fonctions outils. Lorsqu'elles sont déclarées dans un autre fichier que le fichier qui l'utilise, on
utilise le nom du fichier qui contient la méthode comme préfixe. Par exemple, la méthode Math.sqrt
indique que la fonction static sqrt est dans le fichier Math.
Exercice 1
La méthode des rectangles permet d’approximer l’intégrale d’une fonction f continue. Cette
méthode consiste à découper en n intervalles [ai, ai+1], de longueur identique m, l’intervalle [a,b] sur
lequel on veut intégrer la fonction f, puis à additionner l’aire des rectangles de hauteur
f(ai+ai+1
2)
et de largeur m. Laire A, approximation de l’intégrale f sur l’intervalle [a,b] aura
pour valeur :
A=
i=1
n
m×f(ai+ai+1
2)
Illustration :
Programmez en Java une fonction (méthode static) qui calcule l’intégrale de la fonction cosinus sur
un intervalle [a,b]. Testez votre méthode, par exemple, sur l’intervalle [0,/2].
Exercice 2
Écrire une classe DateEntiere qui comprend un ensemble de méthodes statiques permettant la
manipulation de dates au format entier (jour sur 2 chiffres 01 à 31, mois sur deux chiffres 01 à 12 et
année sur 4 chiffres).
DateValide qui retourne vrai si la chaîne passée en paramètre est valide. Il faudra prendre en
compte le problème du maximum des jours de mois à 30,3= 31, 28 ou 29 jours). Vous
pouvez consulter la classe String
https://docs.oracle.com/javase/8/docs/api/java/lang/String.html pour apprendre comment
récupérer une sous-chaîne de caractère. La classe Integer
https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html comporte des méthodes
statiques permettant de transformer un String en entier ;
public static int getJour(String s) qui retourne le numéro entier de la date si elle au format
entier de date, sinon retourne -1 ;
public static int getMois(String s) et static int getAnnée(String s) même chose pour le
mois et l'année ;
public static String enLettres(String s) retourne la date sous forme textuelle jour mois en
toute lettre et année en chiffre, retourne la chaîne vide si la date n'est pas au format ;
écrire une classe MainDate qui demande à l'utilisateur d'entrer une date et affiche cette date
en toute lettre si elle est valide ou affiche date invalide dans le cas contraire (cf ci-dessous)
java MainDate
Entrez une date 14022017
14 février 2017
Entrez une date 34012017
La date 34012017 est invalide
public class DateEntiere {
public static boolean dateValide(String s){
if (s.length() != 8)
return false;
int jour;
jour = Integer.parseInt(s.substring(0,2));
if ((jour < 1) || (jour > 31))
return false;
int mois = Integer.parseInt(s.substring(2,4));
if ((mois < 1) || (mois > 12))
return false;
int année;
année = Integer.parseInt(s.substring(4,s.length()));
if ((année < 1000) || (année > 9999))
return false;
return true;
}
public static int getJour(String s){
if (dateValide(s)){
int jour;
jour = Integer.parseInt(s.substring(0,2));
return jour;
}
return -1;
}
public static int getMois(String s){
if (dateValide(s)){
int mois = Integer.parseInt(s.substring(2,4));
return mois;
}
return -1;
}
public static int getAnnée(String s){
if (dateValide(s)){
int année;
année = Integer.parseInt(s.substring(4,s.length()));
return année;
}
return -1;
}
public static String entouteLettre(String s){
String res="";
if (dateValide(s)){
int jour = getJour(s);
int mois = getMois(s);
int année = getAnnée(s);
res = jour + " ";
switch(mois){
case 1:
res = res + "janvier ";
break;
case 2:
res = res + "février ";
break;
case 3:
res = res + "mars ";
break;
}
res = res + année;
return res;
}
return "";
}
}
import java.util.Scanner;
public class MainDate {
public static void main(String [] args){
String date;
Scanner sc = new Scanner(System.in);
System.out.print("Entrez une date ");
date = sc.next();
if (DateEntiere.dateValide(date))
System.out.println(DateEntiere.entouteLettre(date));
else
System.out.println("La date " + date + " est invalide");
}
}
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !