我正在编写一个程序来计算一米边界花园所需的草皮量,然后找到草坪每平方米花费10英镑的总成本。这是我到目前为止的代码:
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 _3._6
{
public partial class frmTurfCalculator : Form
{
public frmTurfCalculator()
{
InitializeComponent();
}
public float LengthFinal { get; private set; }
public double Lengthvalue { get; private set; }
public float WidthFinal { get; private set; }
public double WidthValue { get; private set; }
private void btnCalculate_Click(object sender, EventArgs e)
{
Lengthvalue = Convert.ToDouble(txtLength.Text);
double LengthFinal = (Lengthvalue - 2);
WidthValue = Convert.ToDouble(txtWidth.Text);
double WidthFinal = (WidthValue - 2);
double GardenArea = (WidthFinal * LengthFinal);
double TurfCost = (10 * GardenArea);
lblOutput1.Text = ("Amount of Turf (with 1m boundry): " + GardenArea);
lblOutput2.Text = ("Total cost of turf = " + TurfCost + "£");
}
}
}
出于某种原因,每当我运行(我使用的宽度为6米,长度为6米)时,它会产生一个非常奇怪的结果(16平方米)。这种情况发生在不同的输入,但为了解释,我使用6米。
由于
答案 0 :(得分:2)
您的问题在于这两行代码:
double LengthFinal = (Lengthvalue - 2);
double WidthFinal = (WidthValue - 2);
你从宽度和长度中减去2。所以6 * 6变成4 * 4,给你16的结果。
如果您设置断点并通过代码调试(甚至只是查看代码),您会立即看到这一点。
答案 1 :(得分:2)
我不相信你有问题。你说:
我正在编写一个程序来计算一米边界花园所需的草皮量
您使用的宽度和高度值均为6.因此您有一个6 * 6的花园,边界为1米(假设边界环绕草皮的所有边)。这将留下一个需要草坪的4 * 4区域。
这使你留下了16平方米草坪的剩余区域,这是你得到的结果。所以最终价值应该是160英镑。