A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聂益飞 高级黑马   /  2013-3-27 00:37  /  1844 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. int x = 10;
  2. int y;

  3. if (x > 10) {
  4.         y = 10;
  5. } else if (x == 10) {
  6.         y = 20;
  7. } else if (x < 10) {
  8.         y = 30;
  9. } else {
  10.         y = 0;
  11. }

  12. int z = y + 20;
  13. System.out.println(z);
复制代码
如上代码!!我一旦不加else为什么y会在编译期间报错?????这个不太好理解啊

点评

如果你的问题已经得到解决后,请及时将主题贴类型改为 [已解决] ,如还有问题可继续追问。  发表于 2013-3-27 04:51

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

6 个回复

倒序浏览
程序第二行 int y;      y没有初始化。 写成 int y = 0; 就行了
回复 使用道具 举报
在eclipse下运行,这些错误会自动报提示的。
回复 使用道具 举报
如果第二行 声明的时候放在方法内的话需要给个默认值的就不出错了。
回复 使用道具 举报
本帖最后由 lsh12330ok 于 2013-3-27 01:11 编辑

我觉得你应该把程序改一下:
  int x =10;
  int y;
           if (x > 10) {
                       y = 10;
                } else if (x == 10) {
                       y = 20;
                } else {
               y = 30;
                }

                int z = y + 20;

                System.out.println(z);
}
第三个else if语句没必要,因为前面的条件都不满足时,就用else语句判断
如果你是按照你上面的代码,很明显你不写 else语句,java虚拟机肯定会给你报错 说y没有被初始化,想避免此类错误,声明变量y的时候  int y =0;
我代码里面的else 指的是 x<10的情况

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
这又得说到编译期和运行期的问题.
编译期来说,编译器无法确定你的if 和if else是否一定会被执行,只有运行了才知道.
而你的Y没有进行初始化赋值,如果你的if 和else if都没有执行的话,y就没有初始化,所以必须要有else编译器才允许编译通过.
所以你可以 在定义Y的时候写成y=0 这样就不需要最后的else了.
回复 使用道具 举报
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x=5;
  6.                 int y=0;
  7.                 if(x>10)
  8.                 {
  9.                         y=10;
  10.                 }
  11.                 else if(x==10)
  12.                 {
  13.                         y=20;
  14.                 }
  15.                 else
  16.                 {
  17.                         y=30;
  18.                 }
  19.                 int z=y+20;
  20.                 System.out.println(z);
  21.         }
  22. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马