2017-07-20 64 views
1

我在c#中創建一個程序,將獲取項目的名稱和該項目的數量,並將計算項目的總量。嘗試捕捉返回到特定的代碼行在c#

我的問題是,每當我進入了無效輸入「請輸入項目的數量:」,它可以追溯到代碼的第一行,並再次要求的項目名稱,我應該怎麼做我可以繼續而不必重複它到我的代碼的第一行?

我已經做了很多關於我的問題的研究,但是我找不到我的問題的答案。

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..."); 

} 

這是整個CONTEX:

這是我的全部代碼。

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

也許你應該使用輔助方法和'TryParse'而不是'Parse'。 – dcg

+1

你可以粘貼整個上下文嗎?它看起來像你在一些循環中運行此代碼... – tdragon

+0

因爲您正在使用'Console.Write(...)'而不是'Console.WriteLine(...)'作爲您的提示,所以您的後續解析試圖解析提示+迴應? – ne1410s

回答

2

你可以把每一個參數的輸入在它自己的循環,直到你得到有效的價值

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

你真的無法避免分裂爲每個輸入try塊,因爲抓不知道Parse確實失敗了。

如果你堅持一個塊,那麼你可以添加一個狀態變量來監視到目前爲止哪些輸入已經成功。