C# 用单选按钮做一些基础数学
我正在做一个程序,将计算多少人需要支付,如果他们有车停在那里。我正在尝试使用单选按钮选择车辆类型。当选择cars(radiobutton1)时,算法工作,但当选择trucks(radiobutton2)时,算法将不工作。这是我的密码C# 用单选按钮做一些基础数学,c#,C#,我正在做一个程序,将计算多少人需要支付,如果他们有车停在那里。我正在尝试使用单选按钮选择车辆类型。当选择cars(radiobutton1)时,算法工作,但当选择trucks(radiobutton2)时,算法将不工作。这是我的密码 // cars if (radioButton1.Checked == true) { int hac = Convert.ToInt16(txthrs.Text); int
// 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();
}
}
}
}
//汽车
如果(radioButton1.Checked==true)
{
int hac=Convert.ToInt16(txthrs.Text);
int h1c=5;
int h2c=3;
如果(txthrs.Text==“1”);
money.Text=h1c.ToString();
if(hac<1);
money.Text=(h1c+(hac-1)*h2c.ToString();
//汽车的尽头
//卡车
如果(radioButton2.Checked==true)
{
int hat=转换为16(txthrs.Text);
int h1t=6;
小数h2t=3.5m;
如果(txthrs.Text==“1”);
money.Text=h1t.ToString();
if(hat<1);
money.Text=(h1t+(hat-1)*h2t).ToString();
}
}
}
}
}如果嵌套了if语句,则只有选中单选按钮1,才会执行第二条if语句。将第二个if块从第一个if块中移出。如果嵌套了if语句,则只有选中单选按钮1,第二个if语句才会执行。将第二个if块移出第一个if块 当选择卡车(radiobutton2)时,它将不工作 首先,您有一些逻辑错误,因为
if(hac<1)代码>和(hat<1)代码>根本不做任何事情,它只是一个表达式本身。考虑到这一点,我更新了您的代码以删除这些逻辑错误
其次,不要使用==
来比较字符串,而是使用方法
第三,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();
}
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();
如果(hac<1)
money.Text=(h1c+(hac-1)*h2c.ToString();
}
如果(radioButton2.Checked==true)
{
int hat=转换为16(txthrs.Text);
int h1t=6;
小数h2t=3.5m;
if(txthrs.Text.ToString().Equals(“1”))
money.Text=h1t.ToString();
if(hat<1)
money.Text=(h1t+(hat-1)*h2t).ToString();
}
当选择卡车(radiobutton2)时,它将不工作
首先,您有一些逻辑错误,因为if(hac<1)代码>和(hat<1)代码>根本不做任何事情,它只是一个表达式本身。考虑到这一点,我更新了您的代码以删除这些逻辑错误
其次,不要使用==
来比较字符串,而是使用方法
第三,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();
}
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();
如果(hac<1)
money.Text=(h1c+(hac-1)*h2c.ToString();
}
如果(radioButton2.Checked==true)
{
int hat=转换为16(txthrs.Text);
int h1t=6;
小数h2t=3.5m;
if(txthrs.Text.ToString().Equals(“1”))
money.Text=h1t.ToString();
if(hat<1)
money.Text=(h1t+(hat-1)*h2t).ToString();
}
它在那里,因此当输入框大于1时,它将开始为每小时添加3而不是5。请显示一个完整的示例。您应该提供足够的代码,以便我们可以自己复制、编译和运行它。这样,当输入框大于1时,它将开始为每小时添加3而不是5。请显示一个完整的示例。您应该提供足够的代码,我们可以自己复制、编译和运行它。您不需要在字符串上调用ToString(txthrs.Text.ToString()
,其他类似的都是多余的)。第二,运算符==被字符串重写,因此无需调用Equals()
,除非传递区域性information@pinkfloydx33我知道,而且你不是第一个说“你不需要在字符串上调用ToString(txthrs.Text.ToString()”的人。”我猜你也不会是最后一个。正如我经常对人们说的,我喜欢在编程时尽可能地明确。为什么要到此为止呢?当然myString.ToString().ToString()
更明确,肯定会确保你有一个字符串。如果有任何东西是混乱的,就像If(bool==true)一样
。我想每个人都有自己的。顺便说一句,如果你想明确地说,ToInt16
返回一个short
,你至少应该调用ToInt32
,或者更好地使用int.TryParse
,因为数据来自用户(我知道这是OPs代码,但重点是如果你要添加自己的ToString调用,并建议更改一些有更好的地方要指出的内容)你不需要在字符串上调用ToString(txthrs.Text.ToString()
,其他类似的都是多余的)。其次,运算符==被字符串重写,因此无需调用Equals()
,除非传递区域性information@pinkfloydx33我知道,而且你不是第一个说“你不需要在字符串上调用ToString(txthrs.Text.ToString()”的人。”我想你也不会是最后一个。正如我经常对人们说的那样,我喜欢在编程时尽可能明确。那为什么就到此为止呢?当然myString.ToString().ToString()