2016-06-18 7 views
1

Nicht sicher, was ich hier falsch mache. Ich habe ein Programm, das nach einer Eingabe fragt, 1 von 2 Optionen, und zeigt dann die Kosten der zugehörigen Option an.C# Eine nicht behandelte Ausnahme vom Typ 'System.FormatException' ist in mscorlib.dll aufgetreten

ich die Fehlermeldung bekommen „Eine nicht behandelte Ausnahme des Typs‚System.FormatException‘ist in mscorlib.dll aufgetreten

Zusätzliche Informationen: String muss lang genau ein Zeichen sein.“

Was habe ich falsch mit meinem Code gemacht? Siehe unten:

using System; 
 
using System.Collections.Generic; 
 
using System.IO; 
 
using System.Linq; 
 
using System.Text; 
 

 

 
namespace computerPackage 
 
{ 
 
    class Program 
 
    { 
 
     static void Main(string[] args) 
 
     { 
 
      char computerPackage; 
 
      const decimal DELUXE_PACKAGE = 1500; 
 
      const decimal SUPER_PACKAGE = 1700; 
 
      Console.Write("Input the Computer Package D or S: "); 
 
      computerPackage = char.Parse(Console.ReadLine()); 
 
      computerPackage = Char.ToUpper(computerPackage); 
 
      if (computerPackage == 'D') 
 
      { 
 
       Console.WriteLine("Cost of Deluxe Computer Package is " + DELUXE_PACKAGE.ToString("D")); 
 
      } 
 
      else if (computerPackage == 'S') 
 
      { 
 
       Console.WriteLine("Cost of Deluxe Computer Package is " + 
 
       SUPER_PACKAGE.ToString("S")); 
 
      } 
 
      else 
 
      { 
 
       Console.WriteLine("Package D or S not entered"); 
 
      } 
 
      Console.WriteLine("Press any key to continue..."); 
 
      Console.ReadKey();   // pause 
 
     } 
 
    } 
 
}

+0

versuchen Sie, Ihre Eingabe (Console.Readline()) für genau ein Zeichen zuerst zu überprüfen. Scheint, dass Ihre char.Parse-Methode zu viele Eingaben erhält. – Dominik

Antwort

1

Bro der Grund, warum Fehler Console.WriteLine("Cost of Deluxe Computer Package is " + DELUXE_PACKAGE.ToString(D)); die Laufzeitumgebung sagt in Datetime-Format zu setzen es. Ändern Sie es in Console.WriteLine("Cost of Deluxe Computer Package is " + DELUXE_PACKAGE.ToString());

+0

Absoluter Champion, danke! – purplemonkeydishwasher

+0

keine probs. Denken Sie daran, den Parameter .tostring() leer zu halten, da er in den meisten Fällen immer leer ist. Nur in der benötigten Zeit. –

+0

Großartig, danke. Dies kann nützlich sein für ein anderes Problem, das ich mit etwas anderem habe! – purplemonkeydishwasher

0

Das Problem für die Dezimalzahlen von Ihrer ToString Methode kommt. Es gibt spezielle Formate, die Sie können verlangen, werfen Sie einen Blick auf sie hier:

ToString(Format)

+0

Danke Kumpel, ein wenig verwirrt, wenn ich es ansehe, ich bin mir nicht ganz sicher, was ich es ändern sollte – purplemonkeydishwasher

+0

Entschuldigung, aber das ist einfach falsch, oder? Die Formatabnahme von Tostring fügt als "zusätzliche Information" hinzu, dass eine Bedingung "Format ist ungültig" ist, was nicht das ist, was die Operation hat. ops Problem ist in char.parse (...). – Dominik

+0

@Dominik - irgendwelche Vorschläge, was ich reparieren muss? – purplemonkeydishwasher

Verwandte Themen