另外,我必须设置一些限制。汽车24小时不应超过38.00美元,24小时内卡车不超过44.50美元。
我发现的唯一问题是我无法设置这些限制。它给出了一个错误:使用未分配的局部变量'result'。
检查注释的///代码。
任何帮助非常感谢。这不是一个学业项目,我只是自己学习c#并做一些练习。
以下是代码:
private void calculate_Click(object sender, EventArgs e)
{
double carhours = 3;
double truckhours = 3.50;
double carFirsthour = 5;
double truckFirsthour = 6;
int hrs = (int)numericUpDown.Value;
double result;
int maxCarFee = 38;
if (numericUpDown.Value < 1)
{
MessageBox.Show("NO WAY");
return;
}
if (carButton.Checked == true && (numericUpDown.Value == 1))
{
result = (hrs * carFirsthour);
fee.Text = "$" + result;
}
if (carButton.Checked == true && (numericUpDown.Value > 1))
{
result = ((hrs - 1) * carhours + carFirsthour);
fee.Text = "$" + result;
}
if (truckButton.Checked == true && (numericUpDown.Value == 1))
{
result = (hrs * truckFirsthour);
fee.Text = "$" + result;
}
if (truckButton.Checked == true && (numericUpDown.Value > 1))
{
result = ((hrs - 1) * truckhours + truckFirsthour);
fee.Text = "$" + result;
}
/// limits
///if (carButton.Checked == true && (numericUpDown.Value < 24) && (result > maxCarFee))
///{
/// fee.Text = "$" + maxCarFee;
///}
}
答案 0 :(得分:1)
您需要转换numericUpDown.Value 到int32
或者因为你这样做了:
int hrs = (int)numericUpDown.Value;
你可以在if语句中使用hrs而不是numericUpDown.Value
答案 1 :(得分:1)
尝试这样的事情:
private void calculate_Click(object sender, EventArgs e) {
double carhours = 3.0;
double truckhours = 3.5;
double carFirsthour = 5.0;
double truckFirsthour = 6.0;
double maxCarFee = 38.0;
double maxTruckFee = 44.5;
int hrs = (int)numericUpDown.Value;
double result;
if (hrs < 1) {
MessageBox.Show("NO WAY");
return;
}
if (carButton.Checked) {
result = (hrs-1) * carhours + carFirsthour;
if (result > maxCarFee) {
result = maxCarFee;
}
}
else {
result = (hrs-1) * truckhours + truckFirsthour;
if (result > maxTruckFee) {
result = maxTruckFee;
}
}
fee.Text = "$" + result;
}
但是,如果汽车/卡车停留时间超过24小时(或超过48小时),您并不清楚会发生什么。您可能会得到更一致的结果,如下所示:
private void calculate_Click(object sender, EventArgs e) {
double hourlyFee = 3.0;
double firstHourFee = 5.0;
double max24hrFee = 38.0;
if (!carButton.Checked) {
hourlyFee = 3.5;
firstHourFee = 6.0;
max24hrFee = 44.5;
}
int hrs = (int)numericUpDown.Value;
if (hrs < 1) {
MessageBox.Show("NO WAY");
return;
}
double result = 0.0;
if (hrs >= 24) {
result = (hrs / 24) * max24hrFee;
hrs = hrs % 24;
}
if (hrs > 0) {
result = result + firstHourFee + ((hrs-1) * hourlyFee);
}
fee.Text = "$" + result;
}
答案 2 :(得分:0)
你检查numericUpDown.Value是否小于24,我认为你的意思是更大(&gt;)?!
使用未分配的局部变量'result'
表示您不初始化变量。你必须做这样的事情
result = 0
在你去if构造之前。
答案 3 :(得分:0)
问题是没有执行任何条件(if)语句,因此永远不会为result
赋值。在其声明中分配result
- double result = 0D;
- 代码将运行,以便您可以调试条件逻辑。
答案 4 :(得分:-1)
int hrs = (int)numericUpDown.Value;
你可以在hrs中获得价值,这样你就可以在if条件下使用它。
if (carButton.Checked == true && (numericUpDown.Value == 1))
写如下。无需== true
if (carButton.Checked && (numericUpDown.Value == 1))