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

显示flag未初始化,求解

public class HelloWorld {

    public static void main(String[] args) {

int score = 94;

String sex = "女";

        String flag;

        if (score > 80){

            if (sex.equals("女")) {flag="进入女子组决赛";

            } else {flag="进入男子组决赛";}

        }

        System.out.println(flag);

}

}


正在回答

4 回答

你这是作用域的问题,你的flag赋值操作是在if的大括号内,而你的输出操作是在if作用域(大括号外面),这明显是要报错的;

给你一段测试代码:

        String a;
        int b=1;
        if(b==1){
            a="hello";
            System.out.println(a);
        }
        //System.out.println(a);

你可以分别注释掉其中任意一个打印语句system.out.println,看看会有啥不同;

自己动手,丰衣足食,求采纳;

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

慕粉1466052569 提问者

非常感谢!
2016-07-09 回复 有任何疑惑可以回复我~
#2

木刻雪原 回复 慕粉1466052569 提问者

谢谢采纳,祝你早日成为大神~~
2016-07-09 回复 有任何疑惑可以回复我~
#3

木刻雪原 回复 慕粉1466052569 提问者

我今天发现这个代码是有问题的,我的回答错了,原因是你在if外没有初始化;
2016-07-10 回复 有任何疑惑可以回复我~
#4

木刻雪原 回复 木刻雪原

我找到原因了,由于flag是main方法的局部变量,java规定局部变量必须要初始化;
2016-07-10 回复 有任何疑惑可以回复我~
#5

慕粉1469541688 回复 木刻雪原

这个代码不好改吧。。我试着改了下。。发现跟原来代码的用法都不同了
2016-07-29 回复 有任何疑惑可以回复我~
查看2条回复

前面的String flag=null;

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

百度到一个答案,说:如果score<80,那么最后flag就只是被定义了却没有被赋值,所以最后无法输出flag,程序会报错

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

慕粉1466052569 提问者

所以最后要加入一个else{flag="淘汰";}
2016-07-05 回复 有任何疑惑可以回复我~

你那里少些了一个条件应该这样写

public class HelloWorld {

    public static void main(String[] args) {

int score = 94;

String sex = "女";

        String flag;

        if (score > 80,sex==女){

         docment.write("进入女子组决赛");

            } else { 

 docment.write("进入男子组决赛");

}

        }

        System.out.println(flag);

}

}


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

无限大宇宙

你这个也是错得有点多啊
2016-07-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165220    人
  • 解答问题       17581    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

显示flag未初始化,求解

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