× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 Calcul du jour d'après - - > javaSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Labougie
  Posté le 23/02/2015 @ 15:49 
Aller en bas de la page 
Groupe Sécurité

Bonjour,

Je cherche à savoir ce qui coince dans mon script, la compilation ne fonctionne pas. (2 erreurs que je ne trouve/comprends pas).

Si je mets "return" bas de page, j'obtiens une erreur, si je l'enlève,j'en ai 2. J'ai cru comprendre qu'il fait que ma dernière ligne "avant" return, me retourne une info,, le "else fev=28" le fait bien, me semble t'il.

La scde erreur se situe ici

if ( mois = 2 ) {
Terminal.lireInt bissext();
}

L'appel de la fonction n'est pas bon, j'en suis conscient, mais c'est aussi mes 1ers pas, et je danse mal la java, pourtant je la fais bien

Je mets le code en .java.

J'utilise un Terminal.class pour l'affichage.

Si vous me demandez le but de cette affaire, ben... C'est de chercher le jour du lendemain, j'sais plus compter, et j'ai plus de calendrier

Labougie



Modifié par Labougie le 02/04/2015 11:15
Publicité
Labougie
 Posté le 23/02/2015 à 16:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Bonjour JP,

Si je te comprends bien,

if ( ( mois = 1 ) || ( mois = 3 ) || ( mois = 5 ) || ( mois = 7 ) || ( mois = 8 ) || ( mois = 10 ) || ( mois = 12 ) ) {

Cette ligne doit être ainsi écrite

if ( ( mois == 1 ) || ( mois == 3 ) || ( mois == 5 ) || ( mois == 7 ) || ( mois == 8 ) || ( mois == 10 ) || ( mois == 12 ) ) { car elle vérifie l'égalité

En revanche cette dernière

jour = 31 est pour donner à la variable la valeur qui est derrière ici donc jour sera égale à 31

ai je bien saisi la nuance?

labougie

Labougie
 Posté le 23/02/2015 à 16:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Je réponds à ton édit sur return.

Donc dans mon cas avec Termina.java je suis plus dans

Terminal.ecrireStringln()

labougie

Labougie
 Posté le 23/02/2015 à 16:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Peux tu me pister pour la seconde erreur

l'appel de la fonction ( que je nomme fonction), mes lectures restent sans solution, pourtant j'ai un super bouquin Claude delannoy "Programmer en Java" Ed n°9

labougie

Labougie
 Posté le 23/02/2015 à 17:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

J'ai corrigé pas mal de blagues. Notamment les && qui ne fonctionnaient pas, mais qui me semblaient logique dans la façon de lire (Not a statement).

J'ai même essayé avec des cloisonnement de () mais que neni.

Donc :

if ( jour = 31 ) {
	mois = (mois+1) && jour = 1;
	   	         } else jour = (jour+1);

est devenue

if ( jour == 31 ) {
mois = (mois+1);
jour = 1;
} else jour = (jour+1);

Par contre le return fev;

ne passe pas non plus, j'ai beau lui parler avec amour, que neni .

labougie

Labougie
 Posté le 23/02/2015 à 17:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Nouveau .java

Labougie
 Posté le 23/02/2015 à 17:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

le code est juste au dessus.

Labougie

Labougie
 Posté le 23/02/2015 à 18:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Merci pour ton astuce.

Il faut que je revoie mes conditions afin de mieux les emboiter.

Labougie

Labougie
 Posté le 23/02/2015 à 21:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

J'ai bien vu que j'avais des coquilles suite à la compilation.

Va falloir que je réorganise tout.

J'ai en tête des switch et case, espérons que je les prépare correctement.

labougie

Publicité
Labougie
 Posté le 24/02/2015 à 17:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Bonjour Jp,

J'ai résolu pas mal de coquilles.

  • le int fev=0 => problème de {} dans les conditions, c'est mieux mais pas certain que cela soit complètement juste pour les {}
  • l'incrémentation des jours quelque soit le mois est bon (exit fevrier)
  • le changement de mois de paire 30-04/2015 à impaire 01-05/2015 est bon

Ne fonctionne toujours pas

  • le changement d'année 31-12/2015 donne 1-13/2015
  • le changement de mois impaire 31-05/2015 vers paire donne 2-6/2015
  • le mois de février et les années bissextiles avec je suppose

nouveau code Jour2.java

labougie



Modifié par Labougie le 24/02/2015 18:03
Labougie
 Posté le 25/02/2015 à 18:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Bonjour JP,

Je ne comprends pas pourquoi cela ne fonctionne que pour les mois ayant 30 jours

et pas ceux ayant 31 jours

c'est pourtant le même raisonnement! et, je ne trouve pas cette double incrémentations pour les jours en question.

Je n'ai pas mis mon nez encore dans fevrier

labougie

Edit:

Il n'y a que pour mai que cela ne fonctionne pas



Modifié par Labougie le 25/02/2015 19:16
Labougie
 Posté le 25/02/2015 à 19:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

je vais étudier ton conseil.

labougie

Labougie
 Posté le 02/04/2015 à 11:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Bonjour,

Je viens apporter ma solution qui est ce que ce qu'elle est, mais fonctionnelle.

public class Jour4 {
public static void main (String[] args) {

int jour, mois, annee;

Terminal.ecrireStringln("Donner le n° du jour: ");
jour = Terminal.lireInt();

Terminal.ecrireStringln("Donner le n° du mois: ");
mois = Terminal.lireInt();

Terminal.ecrireStringln("Donner l'année: ");
annee = Terminal.lireInt();

Terminal.ecrireStringln("la date donnée est :" + jour + " " + mois + " " + annee);


/* valeur des mois par défaut
janv, mars, mai, juillet, aout, oct, dec sont à 31 jours quelque soit l'année
avril, juin, sept, nov sont à 30 jours quelques soit l'année
fev est de 28 ou 29 si année est bissextile


Recherche de la valeur du mois exempté février prendre le recherche bissextile */


// Ici calcul pour les mois de 31 jours
//while (testReponse == false){ // initialisation de la boucle pour pouvoir rentrer au moins une fois dedans ''false'' --> mois de 31 jours

if (( jour < 31 && ( mois == 1 ) || ( mois == 3 ) || ( mois == 5 ) || ( mois == 7 ) || ( mois == 8 ) || ( mois == 10 ))){



jour = jour + 1;
mois = mois;
annee = annee;

Terminal.ecrireStringln("la date + 1 jour est :" + jour + " " + mois + " " + annee);

} else if

(( jour == 31 && ( mois == 1 ) || ( mois == 3 ) || ( mois == 5 ) || ( mois == 7 ) || ( mois == 8 ) || ( mois == 10 ))){


jour = 1;
mois = mois + 1;
annee = annee;

Terminal.ecrireStringln("la date + 1 jour est :" + jour + " " + mois + " " + annee);

}


if (jour == 31 && ( mois == 12)){

jour = 1;
mois = 1;
annee = annee + 1;

Terminal.ecrireStringln("la date + 1 jour est :" + jour + " " + mois + " " + annee);
}

// Ici calcul pour les mois de 30 jours

if (( jour < 30 && ( mois == 4 ) || ( mois == 6 ) || ( mois == 9 ) || ( mois == 11 ))){

jour = jour + 1;
mois = mois;
annee = annee;

Terminal.ecrireStringln("la date + 1 jour est :" + jour + " " + mois + " " + annee);

} else if (( jour == 30 && ( mois == 4 ) || ( mois == 6 ) || ( mois == 9 ) || ( mois == 11 ))){
jour = 1;
mois = mois + 1;
annee = annee;
Terminal.ecrireStringln("la date + 1 jour est :" + jour + " " + mois + " " + annee);
}

// Ici instructions pour le mois de février qui peut être bissextile ou pas

if ( mois == 2) { // année bissextile


if (bissext(annee) == 29) {
if (jour == 29){
jour = 1;
mois = mois + 1;
annee = annee;
} else if (jour < 29) {
jour = jour +1;
mois = mois;
annee = annee;
}


} else if (bissext(annee) < 29){
if (jour < 28){
jour = jour +1;
mois = mois;
annee = annee;
} else if (jour == 28){
jour = 1;
mois = mois + 1;
annee = annee;
}

}

Terminal.ecrireStringln("la date + 1 jour est :" + jour + " " + mois + " " + annee);
}



}

// méthode pour calculer les jours bissextiles
/*
ne sont pas bissextiles les années :

soit non divisibles par 4 ;
soit divisibles par 100, mais pas par 400.
*/
public static int bissext(int annee) {

int fev=0;



if ( ( annee % 4 ) == 0 ) {

if ( ( annee % 100 ) == 0 ){

if ( (annee % 400) ==0 ){

//29 jours si année divisible par 4, 100 et 400
fev = 29;
}
//28 jours si année divisible par 4, 100 et pas par 400
else {
fev = 28;
}
/*Remet systématiquement à 29 jours si année divisible par 4 et 100
(même si c'est passé dans la boucle au dessus et que ça a modifié à 28
quand ce n'est pas divisible par 400 */



//28 jours si année divisible par 4 et pas par 100
} else {
fev = 28;
}
/*Remet systématiquement à 29 jours si année divisible par 4 même si c'est
passé dans les boucles au dessus */



} else {
//28 jours si année n'est pas divisible par 4
fev = 28;
}

return fev; }
}

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
54,99 €Liseuse Amazon Kindle avec éclairage frontal à 54,99 €
Valable jusqu'au 03 Décembre

Amazon fait une promotion sur sa nouvelle liseuse Kindle qui passe à 54,99 € livrée gratuitement. Cette version est équipée d'un écran tactile à encre électronique qui a l'apparence du papier et se lit comme un livre papier. Elle possède maintenant un éclairage frontal réglable vous permet de lire confortablement pendant des heures, à l'intérieur et à l'extérieur, de jour comme de nuit. Elle possède le WiFi ainsi qu'un port MicroUSB. Cette version peut afficher des publicités discrètes pendant sa mise en veille. Pour ne pas les avoir, vous devez vous tourner vers la version Sans offres spéciales qui coûte 64,99 €. Elle peut lire les fichiers ePub en suivant cette astuce.


> Voir l'offre
599 €Portable 14 pouces Asus Vivobook (FullHD, Ryzen 5, 8Go, SSD 512 Go) à 599 €
Valable jusqu'au 03 Décembre

Amazon fait une promotion sur le PC portable 14 pouces Asus Vivobook TM420IA-EC020T qui passe à 599 € alors qu'on le trouve ailleurs à partir de 699€. Ce portable très bien équipé possède un écran 14 pouces Full HD (1920x1080) mat antireflet, un processeur AMD Ryzen 5 4500U, 8 Go de RAM, un processeur graphique AMD Radeon Vega 6 et un SSD NVMe de 512 Go. Le WiFi, le bluetooth et l'ethernet Gigabit sont de la partie. Le tout tourne sous Windows 10. Une bonne affaire.


> Voir l'offre
12,90 €Adaptateur WiFi USB TP-Link Archer T3U Plus à 12,90 €
Valable jusqu'au 03 Décembre

Amazon fait une vente flash sur l'adaptateur WiFi USB TP-Link Archer T3U Plus qui passe à 12,90 €. Cette clé USB vous permettra du profiter du WiFi double Bande AC 1300 Mbps sur votre ordinateur. De quoi diffuser des vidéos HD sans problème et copier rapidement des fichiers volumineux.  Son antenne externe à gain élevé augmente la portée de réception et fournit une connexion WiFi stable dans toute votre maison. On la trouve ailleurs à partir de 20 €. 


> Voir l'offre

Sujets relatifs
mise a jour de java
Mise à jour de Java
Mise à jour de java sur Windows XP Pack 3
Mise à jour de java sur Windows XP Pack 3
probleme de calcul en JAVA
Fenêtre de confirmation avant de quitter "Java"
Plusieurs versions de Java
Java, un bouton colorié à la fois, et tous les autres sont neutres
Classer une arraylist (java)
Ameliorer le Main "Java" avec les fonctions & procédures
Plus de sujets relatifs à Calcul du jour d''après - - > java
 > Tous les forums > Forum Autres langages