3

現在、C# で Shop プログラムのコードを書いています。私はC#に比較的慣れていないため、次のコードで数学を機能させるのに苦労しています:

//Add Basket
public void addBasket()
{
   //Add up the total of individual items
   double total = 0;
   if (shoppingCart.Count() == 0)
   {
      Console.WriteLine("ERROR - Basket is Empty");
   }
   else
   {
      foreach (Products tmp in shoppingCart)
      {
         total = (tmp.Price * tmp.BoughtStock);
         Console.WriteLine("The cost of the individual item  is: " + "\t" +total);
      }
   }
   //Calculate the products together
   double itemTotal = 0;
   if (shoppingCart.Count() == 0)
   {
      Console.WriteLine("ERROR - Basket is Empty");
   }
   else
   {
      foreach (Products tmp in shoppingCart)
      {
         itemTotal = (tmp.Price * tmp.BoughtStock);
         itemTotal = itemTotal + total;
         Console.WriteLine("The cost of the items together is: \t" +itemTotal);
      }
      //Calculate VAT 
      double vatPrice = total * .21;
      double netPriceBeforeDiscount = total + vatPrice;

      //calculate discount: if total cost of shop is over 25 give 10% discount.
      if (netPriceBeforeDiscount >= 25)
      {
         double reducedPrice = netPriceBeforeDiscount * .10;
         double netPrice = netPriceBeforeDiscount - reducedPrice;
         reducedPrice = Math.Round(reducedPrice, 2);
         netPrice = Math.Round(netPrice, 2);

         Console.WriteLine("Discount*:\t\t\t\t " + reducedPrice);
         Console.WriteLine("\nTotal Net Cost (including VAT and discounts):\t      Euro " + netPrice);
      }
      else
      {
         double netPrice = Math.Round(netPriceBeforeDiscount, 2);
      }
   }
}

コードの最初の部分は、バスケットに商品を追加して価格を個別に表示するという点で正しく機能しますが、2 番目の部分で問題が発生し、バスケットの価格を一緒に追加します。出力でわかるように http://gyazo.com/1656eecc689b7a9d0bfc47b8480169a6(ここでC#からの出力を表示する方法がわからないため、出力のスクリーンキャップをリンクする必要があります)最初のアイテムと2番目のアイテムの合計を表示し、2つの結果を正しく追加しますが、 2 番目のアイテムのコストを 2 倍して表示する理由がわかりません。最後に、コードの下部にあるように、VAT を取得して一括割引を表示する正しい方法であると思われる方法を書きましたが、上記のリンクから、2 つのアイテムを使用すると、コードは計算も表示もされません。 VAT または一括割引は、バスケットに 1 つのアイテムがある場合でも適用されます。こちらを参照してください > (* リンク番号 1 以下はここに移動します *) . 繰り返しになりますが、コードの他の部分が正しく機能しない原因となるエラーであると私は想像していますが、

私が言ったように、私はこれに不慣れで、C#がまったく得意ではありませんが、助けがあれば大歓迎です。何か必要な場合は、お尋ねください。ありがとう

編集* : 2 つ以上のリンクを投稿するには 10 の評判が必要であることに気付きました。以下のコメントで 2 つの不足しているリンクをリンクします。

4

2 に答える 2

1

2 番目のループ:

        foreach (Products tmp in shoppingCart)
        {
            itemTotal = (tmp.Price * tmp.BoughtStock);
            itemTotal = itemTotal + total;
            Console.WriteLine("The cost of the items together is: \t" +itemTotal);
        }

また、非常に奇妙です。itemTotalループのたびに上書きしますが、以前に計算された合計をこの結果に追加するだけです。

あなたがここで何を意図しているのかわからないので、+=もう一度使用する必要があると提案するのをためらっていますが、それは間違いです.

ただし、Console.WriteLineステートメントは、トランザクションの各行の価格を表示することを示唆しているように見えます。その場合、次のようなことをする必要があります。

decimal transactionTotal = 0;
foreach (Products tmp in shoppingCart)
{
    decimal lineTotal = (tmp.Price * tmp.BoughtStock);
    transactionTotal += lineTotal;
    Console.WriteLine("The cost of the items together is: \t" + lineTotal);
}

decimalこれは、お金を扱うときにより一貫した結果が得られるためです。

于 2013-11-07T21:35:32.550 に答える