【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。
但是在这里插入图片描述

避免重复的代码
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)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值