我正在编写Java课程的应用程序。我是一个完全的初学者,我刚刚从课程和网络上学到的材料。该应用程序表现出一些行为,我不知道是什么导致它。该应用程序是基于GUI的,并对用户输入进行计算。 对于动作侦听器部分,我有一组If语句,例如: “如果这个按钮这样做 如果这个按钮执行此操作“
这样的一切。似乎应用程序正在运行所有if语句,而不是运行与按下的按钮对应的那个。
我最好不要使用case / switch结构吗?
我可以在必要时发布我的代码,我是这个网站的新手,我不确定这件事是否可以接受。
答案 0 :(得分:3)
在我看到你的代码之前我必须猜测,但考虑到你承认的新意,你可能正在写这样的if语句
if (condition);
{
...
}
而不是像这样
if (condition)
{
...
}
答案 1 :(得分:2)
没有看到我无法肯定的代码,但我以前常常做的事情只是使用if
而不是else if
- 如果我的几个条件得到满足,那么所有的相关代码已运行。如果只想运行第一个匹配项,请使用if-else
以确保不会执行以下任何语句。
答案 2 :(得分:1)
您可能不应该只有一个动作侦听器 - 为每个控件创建一个单独的动作侦听器有助于保持代码的可读性。
但是,如果您的控件共享了大量代码(if语句之前或之后的内容),那么以这种方式执行它可能是有意义的。在这种情况下,它应该是if / elseif。
此外,使您的侦听器成为完整的类(而不是匿名内部类)也可以帮助重用代码(每个if语句中的内容都会进入每个子类)。这可能超出了你迄今为止学到的内容。
编辑:(更直接回答您的实际问题)
就你的问题而言,if不应该全部执行,除非drs9222的答案表明你在if的末尾使用了分号是正确的,或者你的if语句是在测试错误的东西。
您可能只发布正在测试的内容,但您需要使用==或.equals将已知的“Button”对象与event.getSource()进行比较。由于您要比较的每个Button对象都不同,因此只能执行一个。