2017-07-20 9 views
1

Ich erstelle ein Programm in C#, das den Namen des Artikels und die Menge der Menge dieses Artikels erhalten wird, und berechnet die Gesamtmenge des Artikels.versuchen Sie, um zu einer bestimmten Codezeile in c zurückzukehren #

Mein Problem ist, dass, wenn ich eine ungültige Eingabe in eingeben "Geben Sie die Menge des Elements:", es geht zurück in die erste Zeile des Codes und fragen Sie nach dem Elementnamen erneut, Was soll ich tun Ich kann fortfahren, ohne es in die erste Zeile meines Codes zu wiederholen?

Ich habe viele Nachforschungen über mein Problem gemacht, aber ich konnte die Antwort auf mein Problem nicht finden.

try 
{ 
    Console.Write("Enter the name of the item:"); 
     name = Console.ReadLine(); 
    Console.Write("Enter the quantity of item:"); 
     numOfItm = double.Parse(Console.ReadLine()); 
     totalItems += numOfItm; 
    Console.Write("Enter the price of the item:"); 
     priceOfItm = double.Parse(Console.ReadLine()); 
     totalPrice = priceOfItm * numOfItm; 
    Console.WriteLine("Total amount for " + name + " is:" + totalPrice); 
     totalPriceOfItems += totalPrice; 
} 
catch 
{ 
    Console.WriteLine("Please enter a valid input..."); 

} 

Das ist die ganze contex:

Das ist mein ganzer Code.

double numOfItm, priceOfItm, totalPriceOfItems=0, discount, totalPrice,totalItems=0; 
      string name, compute=""; 

while(compute != "total") 
      { 
try 
        { 
         Console.Write("Enter the name of the item:"); 
          name = Console.ReadLine(); 
         Console.Write("Enter the quantity of item:"); 
          numOfItm = double.Parse(Console.ReadLine()); 
          totalItems += numOfItm; 
         Console.Write("Enter the price of the item:"); 
          priceOfItm = double.Parse(Console.ReadLine()); 
          totalPrice = priceOfItm * numOfItm; 
         Console.WriteLine("Total amount for " + name + " is:" + totalPrice); 
          totalPriceOfItems += totalPrice; 
        } 
        catch 
        { 
         Console.WriteLine("Please enter a valid input..."); 

        } 

if (compute == "total") 
       { 
        discount = (totalPriceOfItems/100) * 10; 
        Console.WriteLine("The total number of items:" + totalItems); 
        Console.WriteLine("The total amount of all items you purchased:" + totalPriceOfItems); 
        Console.WriteLine("discount amount:" + discount); 
        Console.WriteLine("Total amount to pay:" + (totalPriceOfItems - discount)); 
        Console.ReadLine(); 
       } 
       else 
       { 
        continue; 
       } 
+1

Vielleicht sollten Sie eine Hilfsmethode und 'TryParse' anstelle von' Parse' verwenden. – dcg

+1

Könnten Sie den gesamten Kontext einfügen? Es sieht so aus, als ob Sie diesen Code in einer Schleife ausführen ... – tdragon

+0

Wenn Sie 'Console.Write (...)' anstelle von 'Console.WriteLine (...)' für Ihre Eingabeaufforderungen verwenden, wird Ihr nachfolgendes Parsing nicht ausgeführt Versuchen Sie, die Aufforderung + die Antwort zu analysieren? – ne1410s

Antwort

2

Sie können jede Parametereingabe setzen in seiner eigenen Schleife, bis Sie gültigen Wert erhalten

int quantity; 
while (int.TryParse(Console.ReadLine(), out quantity) == false) 
{ 
    Console.WriteLine("Please enter valid quantity"); 
} 
0

Sie können wirklich nicht vermeiden für jeden Eingang den try-Block aufgeteilt, weil der Fang nicht kennt welches Parse fehlgeschlagen ist.

Wenn Sie auf einen einzelnen Block bestehen, können Sie eine Statusvariable hinzufügen, die überwacht, welche Eingaben bisher erfolgreich waren.

Verwandte Themen