对象计算验证C#
我的目标是让这个程序能够获取大量的披萨和各种类型的披萨,并计算它们的价格。我决定采用对象解决方案。问题是它不计算它,即使字段为空,它也让程序运行。我真的不知道为什么它不计算它。我还不熟悉对象,所以可能会有一些逻辑错误对象计算验证C#,c#,object,C#,Object,我的目标是让这个程序能够获取大量的披萨和各种类型的披萨,并计算它们的价格。我决定采用对象解决方案。问题是它不计算它,即使字段为空,它也让程序运行。我真的不知道为什么它不计算它。我还不熟悉对象,所以可能会有一些逻辑错误 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; usin
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Assignment_2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void OrderButton_Click(object sender, EventArgs e)
{
double withTax = 0;
double tax = 0;
double subTotal = 0;
var pizzas = new Pizza[3];
if(ValidateAndDeclareQuantities())
{
pizzas = Declare();
subTotal = CalcSubTotal(pizzas);
tax = CalcTax(pizzas);
withTax = CalcWithTax(pizzas);
}
}
bool ValidateAndDeclareQuantities()
{
var combolist = new List<ComboBox>();
combolist.Add(comboBox1);
combolist.Add(comboBox2);
combolist.Add(comboBox3);
var textboxlist = new List<TextBox>();
textboxlist.Add(Quantity1);
textboxlist.Add(Quantity2);
textboxlist.Add(Quantity3);
for (int i = 0; i < 3; i++)
{
if (combolist[i].Text == "Cheese" || combolist[i].Text == "Vegetable" || combolist[i].Text == "Meat")
{ }
else combolist[i].Text = "Wrong input";
}
int[] Quantities = new int[3];
for (int i = 0; i < 3; i++)
{
if (int.TryParse(textboxlist[i].Text, out Quantities[i])&&textboxlist[i].Text!=null)
{ }
else { textboxlist[i].Text = "Wrong input"; }
}
return true;
}
Pizza[] Declare()
{
var pizzas = new Pizza[3];
string type;
int price;
type = comboBox1.Text;
price = int.Parse(Quantity1.Text);
Pizza pizza1 = new Pizza(type, price);
pizzas[0] = pizza1;
type = comboBox2.Text;
price = int.Parse(Quantity2.Text);
Pizza pizza2 = new Pizza(type, price);
pizzas[1] = pizza2;
type = comboBox3.Text;
price = int.Parse(Quantity3.Text);
Pizza pizza3 = new Pizza(type, price);
pizzas[2] = pizza3;
return pizzas;
}
double CalcSubTotal(Pizza[] pizzas)
{
double subTotal = 0;
for (int i = 0; i < 3; i++)
{
subTotal += pizzas[i].Price;
}
return subTotal;
}
double CalcTax(Pizza[] pizzas)
{
double tax = 0;
for (int i = 0; i < 3; i++)
{
tax += pizzas[i].Tax;
}
return tax;
}
double CalcWithTax(Pizza[] pizzas)
{
double withTax = 0;
for (int i = 0; i < 3; i++)
{
withTax += pizzas[i].WithTax;
}
return withTax;
}
void WriteOut(double subTotal, double tax, double withTax)
{
lblSubTotal.Text = "" + subTotal;
lblTax.Text = "" + tax;
lblTotal.Text = "" + withTax;
}
}
}
快速回答:
从不返回validateAndDeclareQuantilities
。当您设置“错误输入”时,它应该(可能)返回falsefalse
- (次要)整数[]数量=新整数[3];除了给它写信之外,它从未被使用过
- (小调)
var pizzas=新比萨饼[3]代码>也从未使用过。它只是在几行之后被声明覆盖了<代码>披萨[]披萨=空代码>或只是
披萨[]披萨代码>是更好的选择。但这不是这里最好的结构
- (次要)在
中名为Declare
的变量命名不当,因为它看起来实际上是数量。像这样的事情很容易让人反感price
- 注销永远不会被调用<代码>带税,
和税
在小计
可能计算正确,但未输出值OrderButton\u单击
从不返回validateAndDeclareQuantilities
。当您设置“错误输入”时,它应该(可能)返回falsefalse
- (次要)整数[]数量=新整数[3];除了给它写信之外,它从未被使用过
- (小调)
var pizzas=新比萨饼[3]代码>也从未使用过。它只是在几行之后被声明覆盖了<代码>披萨[]披萨=空代码>或只是
披萨[]披萨代码>是更好的选择。但这不是这里最好的结构
- (次要)在
中名为Declare
的变量命名不当,因为它看起来实际上是数量。像这样的事情很容易让人反感price
- 注销永远不会被调用<代码>带税,
和税
在小计
可能计算正确,但未输出值OrderButton\u单击
namespace Assignment_2
{
class Pizza
{
string type;
int quantity;
public double Price;
public double SubTotal;
public double Tax;
public double WithTax;
public Pizza(string type, int quantity)
{
this.type = type;
this.quantity = quantity;
FindPrice();
CalcSubTotal();
CalcTax();
CalcWithTax();
}
private void FindPrice()
{
switch (type)
{
case "Cheese":
Price = 9.95;
break;
case "Vegetables":
Price = 10.95;
break;
case "Meat":
Price = 11.95;
break;
}
}
private void CalcSubTotal()
{
SubTotal = Price * quantity;
}
private void CalcTax()
{
Tax = SubTotal * 0.13;
}
private void CalcWithTax()
{
WithTax = SubTotal + Tax;
}
}
}
public enum PizzaType{
Cheese,
Tomato
}