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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. int  x = 10;
  2. int  y ;
  3. if(x>20)
  4. { y= 10}
  5. else if(x>5)
  6. {y=4}
  7. else
  8. { System.out.println( “over”)}
复制代码

如题:为什么会编译失败呢

51 个回复

倒序浏览
本帖最后由 xiao7181jun 于 2015-4-28 22:43 编辑

你的int y; 没有定义初始化值!
加上 int y = 0;即可。像这样int y; 不给y定义初始化值也不是不可以。 但是为什么会编译失败,主要是你因为最后的else语句中缺少y的值,系统无法判断你的这个语句中的 y 会不会超出数据范围,系统无法保证数据范围,所以编译失败。
只要你在 else 语句中也定义 y得值,就OK了!

回复 使用道具 举报
会提示Y的变量没有初始化值  你把y初始化下就ok啦
回复 使用道具 举报
本帖最后由 exist 于 2015-4-28 22:59 编辑
  1. int  x = 10;
  2. int  y ;//可以给y先定义一个初始值 int y = 0;
  3. if(x>20)
  4. { y= 10;}
  5. else if(x>5)
  6. {y=4;}
  7. else
  8. { //或者在else的大括号内对y进行赋值
  9. System.out.println( “over”);
  10. }
复制代码

单你所以的表达式都有对y赋值的动作时你的y可以不定义初始化值。但是你最后的else 没有对y的赋值动作那么你就先对y进行初始化你在没个语句结束的分号也没加上哦。
回复 使用道具 举报
正确代码如下,自己对比运行
                int  x = 10;
                int  y = 0 ;
                if(x>20){
                        y= 10;
                }
                else if(x>5){
                        y=4;
                }
                else{
                        System.out.println( "over");
                }
                System.out.println(y);
        }

}
回复 使用道具 举报
xiao7181jun 发表于 2015-4-28 22:37
你的int y; 没有定义初始化值!
加上 int y = 0;即可。像这样int y; 不给y定义初始化值也不是不可以。  ...

谢谢了,要么初始化,要么在else中给y赋值
回复 使用道具 举报 1 0
第一个错误 y=10后面没有;这个错误你犯了 3次 还有 你的这个x
回复 使用道具 举报
和y 都是局部变量 必须得赋值 而且你没有必要定义y  直接在输出语句中打印y就可以 还有不要用中文的字符
回复 使用道具 举报
  1. package com.itheima;

  2. class Test21 {

  3.         public static void main(String[] args) {

  4.                 int x = 10;
  5.                 int  y=0;
  6.                 if (x > 20) {
  7.                         y = 10;
  8.                 } else if (x > 5) {
  9.                         y = 4;
  10.                 } else {
  11.                         System.out.println("over");
  12.                 }

  13.         }

  14. }
复制代码
回复 使用道具 举报

谢谢了,真仔细了,一般写程序不这样写,但是一般考我们就这样考,小悲催
回复 使用道具 举报
rightyuan521 发表于 2015-4-28 23:00
正确代码如下,自己对比运行
                int  x = 10;
                int  y = 0 ;

你这是先给y初始化,这个我懂,还有一个方式,老师讲课时候,变量定义有两种,第一种就是标准格式了,这个题用到算是第二种吧
回复 使用道具 举报
语句没有结束符号“;”能编译通过就怪啦
回复 使用道具 举报
另外代码块中也没有以分好结束,不规范。
回复 使用道具 举报
请问主函数在哪里?没有函数就不能用System.out.println();
回复 使用道具 举报
大神还是很多
回复 使用道具 举报
大神就是多  受教了
回复 使用道具 举报
因为你的定义的int y局部变量没有进行初始化,你的else语句也没有对Y进行赋值操作
回复 使用道具 举报
{:3_46:},嗯,知道了,谢谢喽
回复 使用道具 举报
大神们都在这里了,膜拜!
回复 使用道具 举报
只吃饭不洗碗 发表于 2015-4-29 13:53
语句没有结束符号“;”能编译通过就怪啦

错误有点错啊
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马