为什么我需要在 switch 语句中使用 break in android studio 才能使程序正常运行?
Why I need to use break in android studio in a switch statement in order for the program to work properly?
代码在这里:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button push_me,secondButton;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
push_me = findViewById(R.id.push_me);
secondButton = findViewById(R.id.secondButton);
push_me.setOnClickListener(this);
secondButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.push_me:
textView.setText(R.string.Someone_pushed);
break;
case R.id.secondButton:
textView.setText(R.string.hello_android);
break;
}
}
如果我去掉中断(程序中的两个中断),程序将无法正常运行,但我不明白为什么。
从适用的“case”标签开始,您的代码将一直执行到 switch 块结束(使用 }
),或者直到它剩下 break
(或者,取决于在上下文中,return
、throw
、continue
,可能是我现在忘记的其他一些事情)。这就是它在 Java(以及许多其他受 C 影响的编程语言)中的工作方式。
这种行为有点类似于标签和 goto 指令的行为,后者早于“现代”结构化编程。由于那些已经完全不再使用,除非你必须手工编写汇编,这种行为对于今天的大多数程序员来说并不直观,但它作为那些奇怪的传统之一继续存在,类似于 80 个字符的行限制回到穿孔卡片。
代码在这里:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button push_me,secondButton;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
push_me = findViewById(R.id.push_me);
secondButton = findViewById(R.id.secondButton);
push_me.setOnClickListener(this);
secondButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.push_me:
textView.setText(R.string.Someone_pushed);
break;
case R.id.secondButton:
textView.setText(R.string.hello_android);
break;
}
}
如果我去掉中断(程序中的两个中断),程序将无法正常运行,但我不明白为什么。
从适用的“case”标签开始,您的代码将一直执行到 switch 块结束(使用 }
),或者直到它剩下 break
(或者,取决于在上下文中,return
、throw
、continue
,可能是我现在忘记的其他一些事情)。这就是它在 Java(以及许多其他受 C 影响的编程语言)中的工作方式。
这种行为有点类似于标签和 goto 指令的行为,后者早于“现代”结构化编程。由于那些已经完全不再使用,除非你必须手工编写汇编,这种行为对于今天的大多数程序员来说并不直观,但它作为那些奇怪的传统之一继续存在,类似于 80 个字符的行限制回到穿孔卡片。