计算价格方法在Visual Studio中不起作用 - c#

因此,我制作了这种形式的蛋糕店。除了价格,我一切都正常。由于某种原因,它无法正确显示,并每次显示“ $ 22.60”。我在想方法可能有问题

public virtual double CalculateCakeCost()
    {
        return CAKE_PRICE + (LAYER_PRICE * NumOfLayers);
    }

因为它似乎返回了蛋糕价格,但未将其与方括号值相加,因此来自“蛋糕”类。来自“ CustomCake”类的使用税法计算成本似乎也可以正常工作。您可以阅读下面的其余代码,请告诉我是否有问题,因为我看不到任何错误。

namespace Lab_OrderCake_The_Bakery_
{

public partial class frmOrderCake : Form
{
    Cake objcake;
    CustomCake objcustcake;
    Customer objcustomer;
    Order objorder;

    public frmOrderCake()
    {
        InitializeComponent();
    }



    private void btnOrder_Click(object sender, EventArgs e)
    {
        //flavour
        if (radVanilla.Checked == true)
        {
            txtRadFlavour.Text = "Vanilla";
        }
        if (radChocolate.Checked == true)
        {
            txtRadFlavour.Text = "Chocolate";
        }
        if (radBanana.Checked == true)
        {
            txtRadFlavour.Text = "Banana";
        }
        if (radLemonBerry.Checked == true)
        {
            txtRadFlavour.Text = "Lemon banana";
        }

        //layers
        if (rad1layer.Checked == true)
        {
            numRadLayers.Value = 1;
        }
        if (rad2layers.Checked == true)
        {
            numRadLayers.Value = 2;
        }
        if (rad3layers.Checked == true)
        {
            numRadLayers.Value = 3;
        }
        if (rad4layers.Checked == true)
        {
            numRadLayers.Value = 4;
        }

        //occassion
        if (radAnniversary.Checked == true)
        {
            txtRadOcc.Text = "Anniversary";
        }
        if (radBirthday.Checked == true)
        {
            txtRadOcc.Text = "Birthday";
        }
        if (radRetirement.Checked == true)
        {
            txtRadOcc.Text = "Retirement";
        }
        if (radWedding.Checked == true)
        {
            txtRadOcc.Text = "Wedding";
        }

        //size
        if (rad6inch.Checked == true)
        {
            numRadSize.Value = 6;
        }
        if (rad8inch.Checked == true)
        {
            numRadSize.Value = 8;
        }
        if (rad10inch.Checked == true)
        {
            numRadSize.Value = 10;
        }
        if (rad12inch.Checked == true)
        {
            numRadSize.Value = 12;
        }

        //design
        if (radPolka.Checked == true)
        {
            txtRadDesign.Text = "Polka Dots";

        }
        if (rad8inch.Checked == true)
        {
            txtRadDesign.Text = "Edible Images";
        }
        if (rad10inch.Checked == true)
        {
            txtRadDesign.Text = "Fondant Bow";
        }
        if (rad12inch.Checked == true)
        {
            txtRadDesign.Text = "3D Figures";
        }

        objcake = new Cake(txtRadFlavour.Text, (int)numRadLayers.Value);
        objcustomer = new Customer(txtFName.Text, txtLName.Text);
        objcustcake = new CustomCake(txtRadFlavour.Text, (int)numRadLayers.Value, txtRadOcc.Text, 
(int)numRadSize.Value, txtRadDesign.Text);
        objorder = new Order();

        lblOutOrder.Text = objcustomer.ToString() + objcustcake.ToString() + objorder.ToString();

    }
}



namespace CakeClasses
{
public class Cake
{
    public int NumOfLayers { get; set; }
    public string Flavour { get; set; }
    public double Price { get; set; }

    public const double CAKE_PRICE = 20;

    public const int LAYER_PRICE = 3;

    public Cake()
    {
        Flavour = "";
        NumOfLayers = 0;
    }


    public Cake(string flavour, int numLayers)
    {
        NumOfLayers = numLayers;
        Flavour = flavour;
    }

    **public virtual double CalculateCakeCost()
    {
        return CAKE_PRICE + (LAYER_PRICE * NumOfLayers);
    }**

    public override string ToString()
    {
        return " " + Flavour + " flavoured cake with " + NumOfLayers + " layer(s)";
    }
  }
}



namespace CakeClasses
{
public class Order
{
    public Customer Customer { get; set; }
    public Cake Cake { get; set; }
    public int NumOfCakes { get; set; }

    public Order()
    {
        Customer = new Customer();
        Cake = new Cake();
        NumOfCakes = 1;
    }



    public Order(string fName, string lName, string flavour, int numLayers, string occasion, int 
diameter, string design)
    {
        Customer = new Customer(fName, lName);
        Cake = new CustomCake(flavour, numLayers, occasion,diameter,design);
        NumOfCakes = 1;
    }


    public Order(string fName, string lName, string flavour, int numLayers)
    {
        Customer = new Customer(fName, lName);
        Cake = new Cake(flavour, numLayers);
        NumOfCakes = 1;
    }


    public double CalculateCostWithTax()
    {
        return Cake.CalculateCakeCost() * 1.13;
    }


    public override string ToString()
    {
        return "for the total cost of " + CalculateCostWithTax().ToString("C");
    }
}
}



namespace CakeClasses
{
public class CustomCake : Cake
{
    public string Occasion { get; set; }
    public int Size { get; set; }
    public string Design { get; set; }
    private double DesignCost { get; set; }


    public CustomCake(string flavour, int numLayers,string occasion, int diameter, string design)
        :base(flavour,numLayers)
    {
        Occasion = occasion;
        Size = diameter;
        Design = design;
         switch (Design)
         {
             case "Polka Dots":
                DesignCost = 5;
                 break;
             case "Edible Images":
                 DesignCost = 12;
                 break;
             case "Fondant Bow":
                DesignCost = 10;
                 break;
             default:
                DesignCost = 15;
                 break;
         }
    }
    public override double CalculateCakeCost()
    {
        return base.CalculateCakeCost() + Size + DesignCost;
    }
    public override string ToString()
    {
        return base.ToString() +  " with " + Design + " design for " + Occasion + " occassion and 
size is " + Size + " inches " ;
    }
}
}

c#大神给出的解决方案

尝试替换代码中的以下行:

objorder = new Order();

与:

objorder = new Order("First Name","Last Name",txtRadFlavour.Text, (int)numRadLayers.Value);

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

将python scikit学习模型导出到pmml - python

我想将python scikit-learn模型导出到PMML。哪个python软件包最合适?我阅读了有关Augustus的内容,但是我无法使用scikit-learn模型找到任何示例。 python大神给出的解决方案 SkLearn2PMML是 JPMML-SkLearn命令行应用程序周围的薄包装。有关受支持的Scikit-Learn Estimator和…

提交表单后显示模式对话框 - php

提交下载文件后,我有一张表格。我要自动而不是自动下载文件..以显示模态对话框并显示下载链接。<form name="softwareform" id="softwareform" action="../downloadlink.php" method="POST" alig…

DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…

在Map中,如果我们使用现有键进行修改,则不会获得ConcurrentModificationException - java

我有以下代码,我希望从情况2的情况下抛出ConcurrentModificationException,但它运行成功。据我所知,如果我对地图中的单个键执行相同的操作,则不会抛出异常,因为here但是当我重现这种具有两个案例的多个密钥的场景时,通过新密钥修改。通过现有密钥进行修改。情况1: Map<String,String> mp = new H…