Console.WriteLine() et les types int [Résolu]

Signaler
Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
28 novembre 2005
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Bonjour à tous,
Voilà je débute en C# et j'ai fait un petit programme super simple qui demande les caractéristiques d'un PC, mais j'ai un problème lorsque je demande l'âge du PC (en souligné italique sur le prog), le compilateur m'indique qu'il ne peut pas implicitement convertir les chaînes en entier. Pourtant j'ai bien précisé que nOld est un entier dans ma définition de classe (public class computer). Qu'est-ce qui cloche ?


using System;


namespace Hello


{


/// <summary>


/// description de mon PC


/// </summary>


public class Class1



{


public static void Main(string[] args)


{


//Création d'un objet de la classe Tower


Tower MyTower = new Tower ();


Console.WriteLine("Entrez le nom du microprocesseur : ");


MyTower.sCpuName = Console.ReadLine();


Console.WriteLine("Entrez le nom de la carte graphique");


MyTower.sGpuCard = Console.ReadLine ();


Console.WriteLine("Entrez le nom et la taille du disque dur");


MyTower.sHDDrive = Console.ReadLine();


Console.WriteLine("Entrez le nom de la carte mère");


MyTower.sMasterCard = Console.ReadLine ();


Console.WriteLine("Entrez le nom de la carte son");


MyTower.sSndCard = Console.ReadLine();


//Création de l'ordinateur


Computer MyComputer = new Computer ();


Console.WriteLine("Entrez le nom de la personne ayant assemblé l'ordinateur");


MyComputer.sManufacturer = Console.ReadLine();


Console.WriteLine("Entrez le nom que vous avez donné à l'ordinateur");


MyComputer.sName = Console.ReadLine ();


Console.WriteLine("Entrez l'âge du PC" <gras>);


MyComputer.nOld = Console.ReadLine<gras>();


}


}


}


public class Computer


{


public string sManufacturer;


public string sName;


public int nOld;


public Tower tower;


}


public class Tower


{


public string sCpuName;


public string sHDDrive;


public string sMasterCard;


public string sGpuCard;


public string sSndCard;


}

7 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Console.WriteLine("Entrez l'âge du PC"<gras>);


<gras>MyComputer.nOld = Int.Parse(Console.ReadLine<gras>());

Sébastien FERRAND
[MVP C#]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Int.Parse... en gros, c'est crée un int à partir de la chaine de caractères

Sébastien FERRAND
[MVP C#]
Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
28 novembre 2005

Ok, maintenant ça marche, mais qu'est-ce que int.Parse(Console.ReadLine()) "dit" à mon programme ? Ou plus simplement, à quoi sert généralement Parse ?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Le petit lien qui va bien : Int32.Parse :-)

/*
coq
MVP Visual C#
*/
Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
28 novembre 2005

Encore une question de débutant, sébastien, après je te fout la paix.
Si j'ai bien compris, il faut utiliser Parse car Console.ReadLine()
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
car Console.ReadLine() retourne une string

Sébastien FERRAND
[MVP C#]
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
... et que tu as déclaré nOld en int, c'est comme si tu mettais du café dans une boité a sucre (meme si ca a priori, ca fonctionne. la boite a sucre va pas te renvoyer d'erreur )
Mx