老师,请问一下:switch中是一定要有default分支吗?

老师,请问一下:switch中是一定要有default分支吗?

程序可以运行,符合需求功能。但有些细节没有注意如:switch 中没有default分支。

上面是老师这次作业的点评,连着两次安卓作业老师的点评都写了这个,但我看视频里老师讲案例的时候也都是把default删掉了的啊,如果要写,这两次作业default里写什么呢?

这次作业完整的代码有三次用到switch,都没有写default分支。

其中两次是老师已经写好的,分别是事件监听器radioGroup性别和checkBox喜好那的。

一次是自己写的(寻找菜品button)和(toggleButton查看信息、下一次)那的。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
姜饼 2017-03-30 14:33:16

default和case写法一样 只是default后面不需要跟条件,参考如下代码:

class RadioGroupListener implements OnCheckedChangeListener {
 
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // 当用户选择当前RadioGroup组的Button时被触发
            switch (checkedId) {
            case R.id.rb_man:
                person.setSex("男");
                break;
            case R.id.rb_woman:
                person.setSex("女");
                break;
                default:
                System.out.println("不男不女");//一般在此处会加一些错误处理的代码,例如给用户的提示
                break;
            }
            System.out.println("性别:" + person.getSex());
        }
 
    }


  • 提问者 慕尼黑6819948 #1
    这个提示用户是看不到的吧? 加上这个default分支主要是防止在程序被篡改,控件被增加的情况下处理其它情况吧? 但是,既然控件都能被增加,那不是里面的这段代码也能被修改了。 那怎么防呀?
    2017-03-30 14:50:04
  • 姜饼 回复 提问者 慕尼黑6819948 #2
    对,所以防御式编程中有很多很多东西,但是这些要慢慢来。刚开始讲这么多也比较难理解。随着课程的递进这些都会有的
    2017-03-30 14:52:14
提问者 慕尼黑6819948 2017-03-30 14:20:54
class RadioGroupListener implements OnCheckedChangeListener {

		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId) {
			// 当用户选择当前RadioGroup组的Button时被触发
			switch (checkedId) {
			case R.id.rb_man:
				person.setSex("男");
				break;
			case R.id.rb_woman:
				person.setSex("女");
				break;
			}
			System.out.println("性别:" + person.getSex());
		}

	}

比如说这是老师自己写好的一段代码,如果说是非要加default分支,是在最后一个case分支后面,加上

default:;

吗?

姜饼 2017-03-30 13:39:26

你好 在switch加default分支 体现的是编码规范。如果不加,语法也不会报错的。不过建议在使用switch的时候都加上default的分支。例如,最简单的使用场景,当用户输入的内容不符合你的case条件的时候,如果有default就可以提示用户 输入错误请重新输入

  • 提问者 慕尼黑6819948 #1
    但是这两次作业都是安卓的呀,根本不会错呀,就是判断点的是哪个控件,那加default有什么用啊,老师的代码里也是没有default的
    2017-03-30 13:53:51
  • 提问者 慕尼黑6819948 #2
    如果是控制台程序我也都用了default的,在安卓的作业中,switch中的default真不知道能写什么
    2017-03-30 13:56:48
  • 姜饼 回复 提问者 慕尼黑6819948 #3
    default如果不加,语法上肯定不会报错的。另外不是说default在android里没用,只是因为还没有碰到这样的需求。这个东西就和类名要大写一样,不大写也不报错
    2017-03-30 14:13:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师