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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class demo
{
        public static void main(String[] args)
        {
                System.out.println("等级为"+fenshu(91));
        }
        public static char fenshu(int x)
        {
                char level;
                if(x>=90 && x<=100)
                {
                        level = 'A';
                }
                else
                if(x>=80 && x<=89)
                {
                        level = 'B';
                }
                else
                if(x>=70 && x<=79)
                {
                        level = 'C';
                }
                else
                if(x>=60 && x<=69)
                {
                        level = 'D';
                }
                else
                        if(x>0 && x<60)
                {
                        level = 'E';
                }
                return level;
        }
}

上述代码编译的时候提示可能尚未出现初始化变量level. 如果这时候把char level 随意赋值一个数的话,程序就可以编译通过。
或者

稍微改动一下结果'E'的else if 把IF语句去掉 也能通过

为什么第一组代码通过不了,求大神解答?
class demo
{
        public static void main(String[] args)
        {
                System.out.println("等级为"+fenshu(91));
        }
        public static char fenshu(int x)
        {
                char level;
                if(x>=90 && x<=100)
                {
                        level = 'A';
                }
                else
                if(x>=80 && x<=89)
                {
                        level = 'B';
                }
                else
                if(x>=70 && x<=79)
                {
                        level = 'C';
                }
                else
                if(x>=60 && x<=69)
                {
                        level = 'D';
                }
                else
                {
                        level = 'E';
                }
                return level;
        }
}

4 个回复

倒序浏览
你如果不给level初始赋值的话,万一level进不到你所有的条件里,那这个时候level是不是就不知道是什么值了,所有才会报错。而你所说的去掉最后的if就是给了level进入条件的最后一个机会,这个时候的level是必然会被赋值的,所以才不会报错
回复 使用道具 举报
neil2015 来自手机 中级黑马 2015-11-27 20:38:49
藤椅
Evelyn_Jone 发表于 2015-11-27 20:08
你如果不给level初始赋值的话,万一level进不到你所有的条件里,那这个时候level是不是就不知道是什么值了 ...

太感谢了。我懂了
回复 使用道具 举报
成员变量有自动初始化 但是方法内的局部变量必须初始化哦  
回复 使用道具 举报
二楼正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马