我正在制作一个程序,计算出有车辆停放时需要支付的费用。我正在尝试使用单选按钮来选择车辆的类型。当选择汽车(radiobutton1)时,算法可以工作,但是当选择卡车(radiobutton2)时,它将不起作用。这是我的代码
// cars
if (radioButton1.Checked == true)
{
int hac = Convert.ToInt16(txthrs.Text);
int h1c = 5;
int h2c = 3;
if (txthrs.Text == "1") ;
money.Text = h1c.ToString();
if (hac < 1) ;
money.Text = (h1c + (hac - 1) * h2c).ToString();
// end of cars
// trucks
if (radioButton2.Checked == true)
{
int hat = Convert.ToInt16(txthrs.Text);
int h1t = 6;
decimal h2t = 3.5m;
if (txthrs.Text == "1") ;
money.Text = h1t.ToString();
if (hat < 1) ;
money.Text = (h1t + (hat - 1) * h2t).ToString();
}
}
}
}
}
答案 0 :(得分:2)
当卡车(radiobutton2)被选中时,它将无法工作。
首先,你有一些逻辑上的错误,因为if (hac < 1) ;
和(hat < 1) ;
根本没有做任何事情,它只是一个表达式。考虑到这一点,我已更新您的代码以消除这些逻辑错误。
其次,请勿使用==
来比较strings
,而是使用Equals()
方法。
第三,radioButton2
条件嵌套在radioButton1
条件中,因此会导致意外行为。您可以通过将它们分开来解决它:
if (radioButton1.Checked == true)
{
int hac = Convert.ToInt16(txthrs.Text);
int h1c = 5;
int h2c = 3;
if (txthrs.Text.ToString().Equals("1"))
money.Text = h1c.ToString();
if (hac < 1)
money.Text = (h1c + (hac - 1) * h2c).ToString();
}
if (radioButton2.Checked == true)
{
int hat = Convert.ToInt16(txthrs.Text);
int h1t = 6;
decimal h2t = 3.5m;
if (txthrs.Text.ToString().Equals("1"))
money.Text = h1t.ToString();
if (hat < 1)
money.Text = (h1t + (hat - 1) * h2t).ToString();
}
答案 1 :(得分:0)
您已嵌套if语句,第二个if语句仅在选中单选按钮1时才会执行。将第二个if块移出第一个。