这个地方定义的变量一定要赋初值? 最外面的if如果不符合不就max不就没有赋值了??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 系统不会给局部变量默认初始化,所以此时max只是一个形参,必须赋予初始值以后才能使用 这个问题你只需要明白变量的作用域即可,你这个代码写的本身就有问题,如果a<b是不是直接不进if(a>b)的大括号,建议你用eclipse工具,边写代码,有问题的代码会直接显示出来,不要嵌套很多的if-else,这不是很好的编码习惯哦! 由于楼主在最后打印时调用了max所以会提示必须赋予初值,因为程序只知道你调用了该变量,并不知道你是否会修改该变量,如果为赋初值,这块内存就是一个未知的内存,如果此时改变该内存的值,会产生意向不到的结果,因此编译器提示你初始化。 因为这里根本就没有使用max呀,你在打印的时候用的都是abc 这是lint静态语法检查 这个功能算是编译器的子功能 因为检查出这个if一定不会执行 所以给你报错了 因为编译器会检查你所有的业务逻辑分支,如果没走if(a<b) 的话,你最终直接打印,而没有赋初值所以检查不过,编译不过。 哥 你在骗你自己吗? max必须声明赋值,下面那个声明了max if里面有和max有关的赋值吗? 不都是输出的abc值 并没有让max=a什么的赋值操作啊 局部变量必须赋初始值,不然会出现错误。全局变量可以不赋,不赋值的话在初始化时会自动赋值(引用类型为Null,int基本数据类型为0,double/flaot数据类型为0.0,布尔类型为false,char类型为空(什么都没有不是Null))。 max本事是形参,如果给形参赋值,形参是必须有初始值的, 你要分清楚局部变量和全局变量,在main方法中的变量成为局部变量,要使用的话必须要赋值,在main方法之外的变量不需要赋值,调用的时候默认赋初始值 首先局部变量是要进行赋值的,如果你的编译器可以预编译的话,你的代码是无法通过的;其次,不知道你的max变量有啥作用,反正在贴出来的代码中,max根本没用; public static void main(String[] args) { int a=10; int b=20; int c=30; int max; if(a>b){ if(a>c){ max=a; }else { max=c; } if(b>c){ max=b; }else{ max=c; } }else{ max=0; } System.out.println("max:"+max); }你只要加个第一层if的else块给max赋值就不会报错了,楼上也有很多人说了,当你的第一层if条件不满足的时候,程序会直接打印max,而max没有初值就会报错 请求大牛们解决换行问题 请教mina 数据转发问题 windows 2000系统 无法建立socket连接 迭代器Iterator 取出set中的元素,有没有什么顺序的? gc 高手帮忙,并发的真正含义?它是个宏观概念吗?分大大的送!! 求JAVA学习经验!! 编个socket代理怎么样? 流的问题 tomcat6 绿色版 详细配置方法 缅甸语输入法与文字编码 为何父类构造,子类构造都没有执行。问题在哪里,我新手找不出来,求大神解答?
因为这里根本就没有使用max呀,你在打印的时候用的都是abc
所以检查不过,编译不过。
其次,不知道你的max变量有啥作用,反正在贴出来的代码中,max根本没用;
int a=10;
int b=20;
int c=30;
int max;
if(a>b){
if(a>c){
max=a;
}else {
max=c;
}
if(b>c){
max=b;
}else{
max=c;
}
}else{
max=0;
}
System.out.println("max:"+max);
}你只要加个第一层if的else块给max赋值就不会报错了,楼上也有很多人说了,当你的第一层if条件不满足的时候,程序会直接打印max,而max没有初值就会报错