为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

6 回答

https://img1.sycdn.imooc.com//5b6e98b70001188906360805.jpg

第14行我把default换成break就运行失败了,为什么这个default不能省

0 回复 有任何疑惑可以回复我~

你成功的吸引了我的注意。咳咳...

按照你的逻辑,我也搞了一遍,发现编译过程中报错如下:

https://img1.sycdn.imooc.com//5b63318f0001f7e603640023.jpg

即,变量food并没有被初始化。这就和回答者“好好学习”说的一样,你其实在一开始并没有将food初始化。而你想通过switch语句直接给food赋值,这个环节出现了问题。你想想,Java是面向对象的语言,你的语句中没有使用对象给food赋值,也没有初始化。用default只是正好变相解决了food没有初始化赋值的问题。你学到后面的课程就会发现,food一开始就是没有被初始化的。

0 回复 有任何疑惑可以回复我~

ublic class HelloWorld {
    public static void main(String[] args) {
  char today='日';
  String food="吃饭";
  switch(today){
  case'一':
  case'三':
  case'五':
   food="吃包子";
   break;
  case'二':
  case'四':
  case'六':
   food="吃油条";
   break;
  case'日':
   food="吃主席套餐";
   break;
  }
  System.out.println(food);
    }
}  

我给你敲了一遍,找到了错误,food没有赋初始值,因为当不写defualt时候,food没有值,输出的时候计算机就不知道输出什么,给它附一个初值就好啦

2 回复 有任何疑惑可以回复我~

最后的那个System.out.println();没有匹配的内容吧


0 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5b5dcc0700010f1708310622.jpg这个就省了default

0 回复 有任何疑惑可以回复我~

你用逻辑的思想方式去思考一下,如果你没有放default(默认)的话,你最后一步该输出什么?

就是line 20该怎么输出,毕竟如果一个变量如果没有赋值的话,是不能被使用的

解决方法就是要么加一个default,要么就给food先赋值"错误",


0 回复 有任何疑惑可以回复我~
#1

慕圣4059390 提问者

执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。 today已经与case'日'匹配,已经可以输出啊
2018-07-29 回复 有任何疑惑可以回复我~
#2

慕移动0262251 回复 慕圣4059390 提问者

如果不匹配呢?前面的课程讲到了,JAVA必须先给变量赋值 The local variable food may not have been initialized 这句话的意思就是变量没有初始赋值
2018-08-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这里default不能省?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信