黑马程序员技术交流社区
标题:
关于if和else小疑问!!!
[打印本页]
作者:
聂益飞
时间:
2013-3-27 00:37
标题:
关于if和else小疑问!!!
int x = 10;
int y;
if (x > 10) {
y = 10;
} else if (x == 10) {
y = 20;
} else if (x < 10) {
y = 30;
} else {
y = 0;
}
int z = y + 20;
System.out.println(z);
复制代码
如上代码!!我一旦不加else为什么y会在编译期间报错?????这个不太好理解啊
作者:
牛海亮
时间:
2013-3-27 00:55
程序第二行 int y; y没有初始化。 写成 int y = 0; 就行了
作者:
牛海亮
时间:
2013-3-27 00:57
在eclipse下运行,这些错误会自动报提示的。
作者:
高顺德
时间:
2013-3-27 00:58
如果第二行 声明的时候放在方法内的话需要给个默认值的就不出错了。
作者:
罗胜华
时间:
2013-3-27 01:10
本帖最后由 lsh12330ok 于 2013-3-27 01:11 编辑
我觉得你应该把程序改一下:
int x =10;
int y;
if (x > 10) {
y = 10;
} else if (x == 10) {
y = 20;
} else {
y = 30;
}
int z = y + 20;
System.out.println(z);
}
第三个else if语句没必要,因为前面的条件都不满足时,就用else语句判断
如果你是按照你上面的代码,很明显你不写 else语句,java虚拟机肯定会给你报错 说y没有被初始化,想避免此类错误,声明变量y的时候 int y =0;
我代码里面的else 指的是 x<10的情况
作者:
李尧
时间:
2013-3-27 03:03
这又得说到编译期和运行期的问题.
编译期来说,编译器无法确定你的if 和if else是否一定会被执行,只有运行了才知道.
而你的Y没有进行初始化赋值,如果你的if 和else if都没有执行的话,y就没有初始化,所以必须要有else编译器才允许编译通过.
所以你可以 在定义Y的时候写成y=0 这样就不需要最后的else了.
作者:
蔡陶军
时间:
2013-3-27 03:25
class Demo
{
public static void main(String[] args)
{
int x=5;
int y=0;
if(x>10)
{
y=10;
}
else if(x==10)
{
y=20;
}
else
{
y=30;
}
int z=y+20;
System.out.println(z);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2