[英]So, why is my switch case affecting all the following cases?
因此,我正在尝试设置一系列复选框,当单击它们时,将根据int变量AttackTotal或DamageTotal的复选框添加一个数字,这些变量又将显示在某些文本视图中。
但是,当前,单击顶部的复选框的行为就像我在switch语句中单击了它及其后的每个复选框一样。 第二个点击框似乎也可以激活自己,以及随后的所有其他点击框,等等等等。
这是我在一起的代码。
public void onCheckboxClicked(View v) {
// Is the view now checked?
boolean checked = ((CheckBox) v).isChecked();
// Check which checkbox was clicked
switch(v.getId()) {
case R.id.checkBox1:
if (checked)
{
flankAttack=2;
}
else
{
flankAttack=0;
}
case R.id.checkBox2:
if (checked)
{
pbs=1;
}
else
{
pbs=0;
}
一路下降到..
case R.id.checkBox10:
if (checked)
{
attackTotal=attack+flankAttack+pbs;
damageTotal=damage+pbs;
TextView textView = (TextView) findViewById(R.id.textView2);
TextView textView2 = (TextView) findViewById(R.id.textView4);
textView.setText(Integer.toString(attackTotal));
textView2.setText(Integer.toString(damageTotal));
}
else
{
attackTotal=attack+flankAttack+pbs;
damageTotal=damage+pbs;
TextView textView = (TextView) findViewById(R.id.textView2);
TextView textView2 = (TextView) findViewById(R.id.textView4);
textView.setText(Integer.toString(attackTotal));
textView2.setText(Integer.toString(damageTotal));
}
我只是在星期五才开始尝试弄清楚这些编程知识,所以请保持谨慎。
就在case R.id.checkBox2:
之前case R.id.checkBox2:
您需要break;
告诉程序从switch语句中断。 否则,任何满足R.id.checkBox1
只是继续通过并执行所有必须的逻辑R.id.checkBox2
为好。 (您需要break;
在所有其他情况之前也需要break;
)。
你忘记加休息了; 在每种情况下
在每种case
您都忘记了break
语句。 每次都进入下一个案例。
另外,我强烈建议不要在case语句中添加多行代码,否则它会变得非常丑陋且难以使用。 而是将每种情况拉到自己的方法中。 通常,很容易为每一个自我记录的名字取一个好名字:
switch (foo) {
case 0:
do();
lots();
of();
things();
break;
case 1:
do();
other();
things();
break;
case 2:
if (ugly)
{
this_gets();
messy();
quickly();
}
else
{
we_could();
do_better();
}
break;
}
变为:
void do_case_0() {
do();
lots();
of();
things();
}
void do_case_1() {
do();
other();
things();
}
void do_case_2() {
if (ugly)
{
this_gets();
messy();
quickly();
}
else
{
we_could();
do_better();
}
}
// ...
switch (foo) {
case 0: do_case_0(); break;
case 1: do_case_1(); break;
case 2: do_case_2(); break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.