1、if语句判断
* 语法:
1)if(条件){ //条件满足时执行的代码块; }
else{ //条件不满足时执行的代码块; }
2)if(条件1){ //条件1满足时执行的代码块;}
else if(条件2){ //条件2满足时执行的代码块;}
else{ //条件都不满足时执行的代码块;}
* 浮点数在计算机中常无法精确表示,并且计算可能出现误差,故判断浮点数相等的正确方式是利用差值小于某个临界值来判断;
1 public class Main { 2 public static void main(String[] args) { 3 double x = 1 - 9.0 / 10; 4 if (Math.abs(x - 0.1) < 0.00001) { 5 System.out.println("x is 0.1"); 6 } else { 7 System.out.println("x is NOT 0.1"); 8 } 9 } 10 }
* 判断引用类型相同:
判断值类型的变量是否相等,可使用 == 运算符;
判断引用类型的变量是否相等,若使用 == 只能表示“引用是否相等” 或者说 "是否指向同一个对象",判断引用类型的变量内容是否相等,必须使用 equals()方法
1 public class Main { 2 public static void main(String[] args) { 3 String s1 = "hello"; 4 String s2 = "HELLO".toLowerCase(); 5 System.out.println(s1); 6 System.out.println(s2); 7 if (s1.equals(s2)) { 8 System.out.println("s1 equals s2"); 9 } else { 10 System.out.println("s1 not equals s2"); 11 } 12 } 13 }
【注意】:执行语句 s1.equals(s2) 时,若变量s1为null,会报 NullPointerException。
若要避免这种错误,可以使用短路运算符 &&:
1 public class Main { 2 public static void main(String[] args) { 3 String s1 = null; 4 if (s1 != null && s1.equals("hello")) { 5 System.out.println("hello"); 6 } 7 } 8 }
1 //练习:编写一个程序,计算体制指数BMI,并打印结果 2 // BMI=体重(kg)除以身高(m)的平方,结果:过轻:低于18.5; 正常:18.5-25;过重:25-28;肥胖:28-32;非常肥胖:高于32 3 //平方可以使用n*n/Math.pow(n,2) 4 public class Main(){ 5 public static void main(String[] args){ 6 Scanner scanner=new Scanner(System.in); 7 System.out.print("请输入您的体重(kg):"); 8 double w=scanner.nextDouble(); 9 System.out.print("请输入您的身高(m):"); 10 double h=scanner.nextDouble(); 11 double BMI=w/Math.pow(h, 2); 12 if(BMI>=32) { 13 System.out.printf("你的体质指数为%.2f,判断为过重",BMI); 14 }else if(BMI>=28) { 15 System.out.printf("您的体质指数为%.2f,判断为 肥胖",BMI); 16 }else if(BMI>=25) { 17 System.out.printf("您的体质指数为%.2f,判断为 过重",BMI); 18 }else if(BMI>=18.5) { 19 System.out.printf("您的体质指数为%.2f,判断为 正常", BMI); 20 }else { 21 System.out.printf("你的体制指数为%.2f,判断为 过轻",BMI); 22 } 23 } 24 }