CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

probleme methodes c#

Nawako
Nawako
Niveau 8
25 septembre 2010 à 14:07:33
  1. Salut,

j'essaie de codé un petit programme qui nous demande notre année de naissance, et determine notre age, en utilisant 3 méthodes:

class Age
{
public void Start()
{
Console.WriteLine("You are {0} years old.", enterYear());
}
private int enterYear()
{
Console.WriteLine("Please enter your birth year :");
int birthYear = int.Parse(Console.ReadLine());
return 0;

}
private int calculateAge(int age)
{
int currentYear = DateTime.Today.Year;
age = currentYear - birthYear;
return age;
}
}

Mais j'arrive pas a faire en sorte que la methode enterYear passe sa variable, a la methode calculateAge... quelqu'un a une idée?
Merci

dnob700
dnob700
Niveau 10
25 septembre 2010 à 16:34:30

La ligne suivante est horrible (même si elle est peut-être autorisé) :
Console.WriteLine("You are {0} years old.", enterYear());

Parce que appelé la fonction Console.WriteLine depuis l'intérieur de cette même fonction est horrible (oui, les argument seront évalué avant... mais quand même).

Le problème c'est que ta fonction enterYear renvoie 0 toujours alors que tu veux qu'elle renvoie l'âge, c'est la valeur de retour de cette fonction qui est utilisée par le premier WriteLine. Donc au lieu d'affecter le résultat de int.Parse(...) à une variable dont tu ne te ressers jamais (il n'y a pas un warning là dessus ?) il faut que le return renvoie cette valeur.

Et en regardant, jai l'impression que tu dois avoir une erreur de compilation en fait sur la méthode calculateAge qui ne connaît pas la variable birthYear. Relis peut-être ton cours sur la portée des variables : une variable déclaré à l'intérieur d'une méthode n'existe qu'à l'intérieur de celle-ci et aucune autre méthode ne peux y accéder.

dnob700
dnob700
Niveau 10
25 septembre 2010 à 16:38:38

Oui et ce que j'ai oublié d'écrire c'est que si tu as une erreur de compilation, il FAUT l'écrire sur le forum lorsque tu cherche de l'aide, pour que l'on ne perde pas de temps à faire de tête le travail du compilateur. De plus, en lisant cette erreur ça devrait te permettre de corriger tout seul ton erreur ou en tout cas de mieux la comprendre.

Nawako
Nawako
Niveau 8
25 septembre 2010 à 17:04:03

Oui désolé j'ai pas penser a ecrire l'erreur... et "Console.WriteLine("You are {0} years old.", enterYear()); "
Cette ligne là je l'ai litteralement copié d'un tutorial trouvé sur le net... :/

La solution du tuto est la suivante :

class Age
{
public void Start()
{
Console.WriteLine("Vous avez {0} ans.", entrerAnnee());
}

private int entrerAnnee()
{
Console.Write("Entrez votre année de naissance : ");
string an = Console.ReadLine();

int annee;
if (Int32.TryParse(an, out annee))
return calculAge(annee);

return 0;
}

private int calculAge(int annee)
{
int anneeActuelle = DateTime.Today.Year;
int age = anneeActuelle - annee;

return age;
}
}

Mais j'ai pas trop capté le If qu'il a fait, la commande "out" sert a quoi dans cette situation?

Merci :)

Nawako
Nawako
Niveau 8
25 septembre 2010 à 18:12:17

probleme resolu, merci :)

deepblue
deepblue
Niveau 16
26 septembre 2010 à 13:34:15

Sinon, en terme de conception, tu devrais séparer la partie "je demande les infos" de la partie "je calcule ce que l'age en fonction de différents paramètres".

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment