2009-03-13 5 views
1

J'essaye d'écrire une application console en C# qui permet à un utilisateur d'entrer les informations suivantes au format x, pound, ounce où X est la valeur à convertir.Conversion de valeurs à l'aide d'un fichier texte

J'ai créé un fichier texte contenant les facteurs de conversion au format suivant.

livre, once, 16,0

Ce que je veux l'application à faire est de saisir l'entrée d'utilisateur, puis trouver le facteur de conversion correct dans le fichier texte, puis calculer le résultat.

J'ai essayé d'utiliser une classe de nœud pour faire défiler la liste des facteurs de conversion, mais il ne semble pas fonctionner = (

Pouvez-vous aider?

Répondre

1

La lecture du fichier ligne par ligne est facile .. avec un lecteur de flux vous pouvez alors saisir les trois bits en divisant la chaîne cela ressemble quelque chose comme ceci:

string line; 
StreamReader reader = new StreamReader(filePath); 
while(null != (line = reader.Read()) 
{ 
    //You have to create the constant COMMA_SEP 
    string split = line.Split(COMMA_SEP); 
} 

Faire le calcul corrrect est quelque chose que vous devez créer Omniscient début et de fin que vous avez en. votre liste, vous pouvez créer un état mach Le type de classe qui renvoie la classe correcte à appeler, par exemple. Vous créez ensuite une classe de fabrique pour renvoyer une classe qui contient l'algorithme souhaité.

public class CalculatorFactory 
{ 
    public ICalculator GetCalculator(string origin, string result) 
    { 
      //Implementation to get correct calculator 
    } 
} 

Ensuite, vous pouvez appeler la méthode Calculate sur cette interface et obtenir votre réponse.

Avez-vous du sens?

+0

Cela est logique, je devrais probablement utiliser un certain facteur de conversion lorsque l'entrée de l'utilisateur est égale à une ligne dans le fichier texte. par exemple. 5, livre, once trouve livre, once, 16,0 et calcule ensuite le résultat. – centralhawk3

0

Un fichier plat pour les facteurs de conversion n'est pas suffisant pour l'entreprise. Qu'est-ce que vous avez besoin est de stocker ces facteurs en XML:

<?xml version="1.0" encoding="utf-8" ?> 
<ConversionFactors> 
    <ConversionFactor> 
    <From>Pounds</From> 
    <To>Ounce</From> 
    <Factor>16</Factor> 
    </ConversionFactor> 
    <ConversionFactor> 
    <From>Fortnight</From> 
    <To>Day</From> 
    <Factor>14</Factor> 
    </ConversionFactor> 
    <ConversionFactor> 
    <From>KesselRun</From> 
    <To>Parsec</From> 
    <Factor>12</Factor> 
    </ConversionFactor> 
</ConversionFactors> 

De cette façon, vous pouvez créer un objet XmlDocument et sélectionnez votre facteur de conversion en utilisant une expression XPath.

+0

Je peux essayer si je ne trouve pas une solution plus simple. Merci quand même!=) – centralhawk3

+0

Techniquement, il était inférieur à douze parsecs. ;-) – itsmatt

0

Il existe plusieurs façons de résoudre ce problème. Voici une façon simple de résoudre le problème avec peu de code:

Créer un dictionnaire pour contenir les conversions; Pour chacune des lignes de facteur de conversion dans le fichier, vous pouvez faire un conversionFactors.Add (de-à, valeur), où de-à est la concaténation de ces deux unités - c'est juste une clé de recherche, donc ce n'est pas importe beaucoup comment vous le formatez. L'hypothèse est que l'utilisateur va entrer les mêmes chaînes de texte.

Ensuite, prenez l'entrée de l'utilisateur, construisez la "clé", saisissez le facteur de conversion "valeur" du Dictionnaire en faisant un dictionnaire [de_to] et faites la multiplication.

Certainement pas élégant mais c'est probablement une douzaine de lignes de code. Cela ressemble à des devoirs, alors je vais laisser ma solution là-dessus.

0

j'ai réussi à le résoudre en utilisant un tableau :)

Questions connexes