gpt4 book ai didi

java - 为什么变量在 case 语句中不是局部的?

转载 作者:搜寻专家 更新时间:2023-10-30 21:38:33 25 4
gpt4 key购买 nike

我最近向 android java 应用程序添加了另一个菜单项,令我惊讶的是 Eclipse 说前一个案例中的变量:break 不是本地的(所以我只是添加了一个后缀来解决)。

我有点困惑,如果选择第二个选项,第一组 case:break 根本不会执行。谁能解释一下我的错误想法?

        case R.id.menuDebugMode:
debugMode = !debugMode;
if (debugMode){
Toast.makeText(mainActivity.this, "Debug Mode on - NOT TO BE USED WHILST DRIVING", Toast.LENGTH_LONG).show();
} else {
tvDebug.setText("");
tvInfo.setText("");
}
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("debugMode", debugMode);
editor.commit();
break;

case R.id.menuSpeedMode:
speedSignMode = !speedSignMode;
if (speedSignMode){
Toast.makeText(mainActivity.this, "SpeedSign Mode in use", Toast.LENGTH_LONG).show();

} else {
Toast.makeText(mainActivity.this, "MapSpeed Mode in use", Toast.LENGTH_LONG).show();
}
SharedPreferences settings2 = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor2 = settings2.edit();
editor2.putBoolean("speedSignMode", speedSignMode);
editor2.commit();
break;`

最佳答案

你是对的,最多一个会执行,但一个案例不会创建新的范围。您可以手动创建具有自己范围的 block 。

case foo:
{
int var = ...
}
break;

case bar:
{
int var = ...
}
break;

关于java - 为什么变量在 case 语句中不是局部的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com