× 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
14,90 €Windows 10 Pro 32/64 bits OEM à 14,90 €
Valable jusqu'au 22 Juillet

Le vendeur sérieux DIGITAL FR propose sur Amazon  la clé d'activation pour Windows 10 professionnel en français 32 bits / 64 bits à 14,90 €. Cette clé livrée par email fonctionne avec l'outil d'installation et de création de support de Microsoft que vous pouvez télécharger ici ou directement avec l'ISO de Windows 10 Pro. De quoi installer légalement Windows 10 Pro sur un PC. Pour en savoir plus sur l'achat et l'installation d'une clé OEM de Windows 10, suivez les indications de notre dossier pratique.


> Voir l'offre
402,99 €SSD SanDisk Ultra 3D 4 To à 402,99 € livré
Valable jusqu'au 18 Juillet

Amazon Espagne fait une belle promotion sur le SSD SanDisk Ultra 3D d'une capacité de 4 To qui passe à 400 €. Comptez 4,64 € pour la livraison en France soit unt toal de 404,64 € livré. On le trouve ailleurs autour de 510 €. Une bonne affaire pour ce SSD performant qui offre des débits de 560 Mo/s en lecture et 530 Mo/s en écriture. Cette version est garantie 3 ans.


> Voir l'offre
190,56 €Disque dur externe Western Digital Elements Desktop USB 3.0 10 To à 190,56 € livré
Valable jusqu'au 16 Juillet

Amazon Allemagne propose actuellement le disque dur externe Western Digital Elements Desktop USB 3.0 10 To à 184,13 € (avec la TVA ajustée). Comptez 6,43 € pour la livraison en France soit un total de 190,56 € livré. On le trouve ailleurs à partir de 229 €. Ce disque dur dispose d'un grande capacité de stockage (10 To) et d'une connectique USB 3.0 qui vous offrira des transferts rapides. Il est compatible USB 2.0. Une très bonne affaire. Notez que le disque dur n'est pas soudé et que vous pouvez le récupérer pour l'utiliser dans un ordinateur ou un NAS (il s'agit d'un disque dur CMR UltraStar DC HC 510).

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> 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