Java:d'une méthode

Fermé
shishay - 31 janv. 2020 à 14:54
 shishay - 11 févr. 2020 à 15:10
Hello,
je fais un petit exercice de java,
je cherche un volontiers qui pourrait m'aider à faire une méthode static qui ne prends pas d'argument qui demande d'entrer une valeur entre tel et tel tant que le valeur n'est pas entre les deux nombre qui était donné la méthode doit reposer la question! donc non seulement il doit demander d'entrer une valeur il doit aussi vérifier si la valeur entrer est entre x et y.
je vous suis très reconnaissant en avance!
shishay
A voir également:

3 réponses

jordane45 Messages postés 38347 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 décembre 2024 4 719
31 janv. 2020 à 21:40
Bonjour,

Commence par lire ceci :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

Puis reviens nous voir avec le code que tu auras essayé en expliquant en détail sur quel point précis tu bloques.

0
je vous en remercie!!! en effet, je vais mettre mes programmes ici en bas mais avant d'envoyer j'ai voulais comparer mon programme avec celle de la volontiers,
voici l’exercice:

Le but de cet exercice est de déterminer la date des Pâques (chrétiennes gré go-riennes) : on demande à l’utilisateur d’entrer une année et le programme affiche la date de Pâques de l’année correspondante.

Par exemple :Entrez une annee (1583-4000) :
2006
Date de Pâques en 2006 : 16 avril

On vous demande pour cela d’écrire une classePaquesqui contient trois mé-thodes :1. une méthode static que demanderAnneequi ne prend pas d’argument etretourne un entier ; cette méthode doit :— demander une année à l’utilisateur(message : «Entrez une annee (1583-4000) :»
, voir l’exempled’affichage ci-dessus) ;
tant que l’année entrée n’est pas conforme,cette méthode devra reposer la question.5
— vérifier que l’année saisie est bien entre 1583 et 4000 ;
sinon redeman-der ;— retourner l’année (correcte) saisie



public static int ndemanderAnnee()
 { Scanner key = new Scanner(System.in);
  do {
   
    System.out.println("Entrez une annee (1583-4000)");
   annee =key.nextInt();
   }while(annee<4000 && annee<1583);
  return annee;
 }
  




Alors je crois bien que ma méthode demande bien de entrer une valeur à l'utilisateur mais pas sur qu'il fasse entre tel nombre et tel et si vous arrivez à me dire pour quoi il ne retourne pas une valeur mais comme c'est écrit sans me donner la réponse;)

à remarquer c'est une partie de mon programme donc c'est parce que je souhaite tester à la fois une.
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
3 févr. 2020 à 01:16
Bonjour,

Revérifiez votre condition, en traduisant une boucle de type "Répéter ... Jusqu'à" en algorithmique à une boucle de type "do...while" la condition doit être inversée.
0
shishay > tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022
3 févr. 2020 à 11:13
Mercie bien!
Je fais celle-ci, mais ça pose plus alorsque je entre un nombre inferrière de 1583?
public static int ndemanderAnnee()
	{ Scanner key = new Scanner(System.in);
		do {
			
			 System.out.println("Entrez une annee (1583-4000)");
			annee =key.nextInt();
		 }while(annee>4000 && annee<1583);
		return annee;
	}


est ce que c'est le opérateur qui doit être l'inverse( &&)? comme celle-ci(||)?
ou bien la condition doit être que while mais pas do ..while? lorsque vous dites l'inversée?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020 > shishay
4 févr. 2020 à 13:29
Bonjour,

Effectivement il y a une confusion entre les opérateurs OU
||
est le contraire de ET
&&
, aucun nombre ne peut-être à la fois inférieur à 1583 et supérieur à 4000, c'est l'un ou l'autre.

Il faut écrire le code comme à l'oral : "Faire (...) tant que l'année est inférieure à 1583 ou supérieure à 4000."
do { ... } while (annee < 1583 || annee > 4000);


Remarque : dans le code, où est déclarée la variable
annee
? Ce devrait être une variable locale dont la portée ne dépasse pas celle de la méthode, ici elle est probablement static ce qui va entraîner des effets de bords dans le reste du programme.

De plus, ton code ne gère pas le cas où l'utilisateur tape autre chose qu'un nombre, par exemple un mot...
0
Hello,
Et mtn, ce que ça vous sembles correct la partie demander un nombre entre tel et tel?


public static int ndemanderAnnee()
{
Scanner key = new Scanner(System.in);
do {
boolean chiffre=false;
System.out.println("Entrez une annee (1583-4000)");
annee =key.nextInt();
}while( annee<1583 || annee>4000);

return annee;
}


et le variables annee est static car je vais l'utiliser une fois que cette méthode marche bien l'exercie va contienuer...
donc le faite qu'il soit globale, c'est fait éxprer pour en suite l'utiliser à d'autre méthode, ou bien je deverait appeller juste la méthode ndemanderAnnee()?

pour la vérification de saisire que un entier, corrigez-moi svp ce-ci:
try {
    int teste = Integer.parseInt(annee);
    chiffre = true; // si ton exécution arrive jusque là, ça signifie qu'il n'y a aucune exception lancée et que ta saisie est donc bien un chiffre
  } catch(NumberFormatException e) {
    System.out.println("Cette valeur n'est pas un chiffre, essaie encore !");
  }
0