黑马程序员技术交流社区

标题: JAVA中函数程序中出现 可能尚未出现初始化变量的问题 求... [打印本页]

作者: neil2015    时间: 2015-11-27 19:03
标题: JAVA中函数程序中出现 可能尚未出现初始化变量的问题 求...
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;
        }
}

作者: Evelyn_Jone    时间: 2015-11-27 20:08
你如果不给level初始赋值的话,万一level进不到你所有的条件里,那这个时候level是不是就不知道是什么值了,所有才会报错。而你所说的去掉最后的if就是给了level进入条件的最后一个机会,这个时候的level是必然会被赋值的,所以才不会报错
作者: neil2015    时间: 2015-11-27 20:38
Evelyn_Jone 发表于 2015-11-27 20:08
你如果不给level初始赋值的话,万一level进不到你所有的条件里,那这个时候level是不是就不知道是什么值了 ...

太感谢了。我懂了
作者: 洋葱头头    时间: 2015-11-27 21:29
成员变量有自动初始化 但是方法内的局部变量必须初始化哦  
作者: zqiang    时间: 2015-11-27 21:35
二楼正解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2