java布尔类型遇到if,【JAVA】布尔类型和if语句的嵌套,还有常见的错误

布尔类型

boolean类型只有true和false两种值。

if中的条件必须是布尔型

if(1):错误的

if(布尔类型的){

语句祖;

}:正确

在System.out.println( (布尔语句));

可以输出一个布尔值。

布尔类型不可以强制转换:因为布尔类型与其他基本类型数据不可以互相转换

例如

boolean b = true;

int i = (int)b;

System.out.println(i);

int i = 3;

boolean b = (boolean)i;

System.out.println(b);

错误的

可以用条件运算符

int a=(b==true)?1:0;

//如果b为true则给a赋值1,如果为false则赋值0。

if嵌套类型

if(score >= 90.0)

System.out.print();

else

if()

system,out,print();

else

if()

sys;

else

等价于

if(score >= 90.0)

System.out.print();

else if()

System.out.print();

else if()

System.out.print();

else

System.out.print();

第一个代码和第二个代码的等价的。事实上,第二种是推荐使用的多重选择if语句的书写风格。这种风格称为多分支if-else语句,可以避免深度缩进,并使程序易于阅读。

常见错误类型

1.忘记必要的括号

一个if语句只能控制一个语句,如果多个语句需要花括号。

2.在if行出现错误的分号

比如if();等价于if(){ };

这种错误既不是编译错误,也不是运行错误,而是逻辑错误。

3.对布尔值的冗余测试

if(even = true)

System.out.println("");

if(even)

System.out.println("");

第二个代码的比较好,直接测试布尔变量。这么做的的另一个原因是避免出现难以发现的错误。

4.悬空else出现歧义

if()

if()

System.out.print();

else

System.out.print();

等价于

if()

if()

System.out.print();

else

System.out.print();

也就是说两个代码中,第一个if为假的时候,就没有输出值。当第一个if为真,第二个为假,就执行else。

所以else只和最近的if匹配

还可以强制else

与第一个匹配

if(){

if()

{};

}

else

{};

这样就是强制else与第一个匹配

5.两个浮点数值的相等测试

由于浮点数具有有限的计算精度,无法精准的存储。所以设计浮点数的计算可能引入取整错误。

double x = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1;

System.out.println(x == 0.5);

这里x的值可能不是准确的0.5,而是0.5000000001;

这会输出false。

但是5c273825624e3b5e2e28b91951dafce5.png

避免重复的代码

if(a){

b = 1000;

System.out.print(b);

}

else {

b = 2;

System.out,print(b);

}

在上面的代码中System.out,print(b);反复出现,可以改成如下

if(a){

b = 1000;

}

else {

b = 2;

}

System.out.print(b)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值