选择语句

第三章 选择语句

3.1 比较运算符

  • 大于 >
  • 大于等于 >=
  • 小于 <
  • 小于等于 <=
  • 等与 ==
  • 不等于 !=

3.2逻辑运算符

  • 单与 &
  • 双与&&
  • 或 |
  • 双或 ||
  • 非 !
  • 异或 ^

3.3 if语句

  • 单if
  • if-else分支
  • 多if-else嵌套
  • 多if-else
  • 示例:计算身体质量指数
    在这里插入图片描述
import java.util.Scanner;


public class Test1 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		//1.获取身高和体重
		System.out.print("Please enter your weight and hight:");
		double weight=scanner.nextDouble();
		double hight=scanner.nextDouble();
		//2.BMI=体重/身高^2
		double BMI=weight/hight/hight;
		//3.将BMI进行判断,输出相应的说明
		if(BMI>=30.0){
			System.out.println("过胖");
		}else if(BMI>=25.0){
			System.out.println("超重");
		}else if(BMI>=18.5){
			System.out.println("正常");
		}else{
			System.out.println("偏瘦");
		}
	}
}
  • 示例:判断闰年
    在这里插入图片描述
import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
           Scanner sc=new Scanner(System.in);
           System.out.println("请输入年份");
           int year=sc.nextInt();
           if(year%4==0&&year%100!=0||year%400==0) {
        	   System.out.println("闰年");
           }else {
        	   System.out.println("土年");
           }
		}
	}
  • 示例:彩票
    在这里插入图片描述
import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
           Scanner sc=new Scanner(System.in);
          int random=(int)(Math.random()*100);//假设为           28
          //System.out.println(random);
          System.out.println("请输入一个数字!");
          int num=sc.nextInt();
          System.out.println("电脑产生的数字是"+random);
          //输入                          17
          //定义a1为输入的个位数字 b1位十位数字
          //定义a2为随机产生的个位数字 b2为十位数字
          /*
           * if(a1==a2&&b1==b2)   10000
           * if(a1==b2&&b1==a2)   3000
           * if(a1==a2||a1==b2||b1==a2||b1==b2)
           */
          int a1=num%10;
          num/=10;
          int b1=num%10;
          int a2=random%10;
          random/=10;
          int b2=random%10;
          if(a1==a2&&b1==b2) {
        	  System.out.println("一等奖10000元!");
          }else if(a1==b2&&b1==a2){
        	  System.out.println("二等奖3000元!");
          }else if(a1==b2||a2==b1||a2==a1||b1==b2){
        	  System.out.println("三等奖1000元");
          }else {
        	  System.out.println("拜拜!");
          }
		}
	}

3.4 switch语句

  • switch
  • 不带case的switch
  • switch语句遵循下面的规则:
    在这里插入图片描述

在这里插入图片描述

3.5 条件表达式

  • 布尔表达式

3.6常见错误和陷阱

  • 忘记必要的括号
  • 在if行出现的分号
  • 对布尔值得冗余测试
  • 悬空else出现的歧义
  • 两个浮点值的相等测试
  • 简化布尔变量赋值
  • 避免不同情形中的重复代码

本章小结

  1. boolean类型变量可以存储值true或者false
  2. 关系操作符(<,<=,==,!=,>,>=)产生一个布尔值。
  3. 选择语句用于可选择的动作路径的编程。选择语句有以下几种类型:单分支if语句、双分支if-else语句、嵌套if语句、多分支if-else语句、switch语句和条件表达式。
  4. 各种if语句都是基于布尔表达式来控制决定。根据表达式的值时true或false,这些语句选择两种可能中的一种。
  5. 布尔操作符&&、||、!和^对布尔值和布尔变量进行计算。
  6. 当对p1&&p2求值时,java先求p1的值,如果p1为true,再对p2求值。如果p1为false,就不再对p2求值。当对p1||p2求值时,先对p1求值,如果p1为false,再对p2求值,如果p1位true就不再对p2求值。
  7. switch语句根据char、byte、int、short或者String类型的Switch来进行控制决定。
  8. 在switch语句中,关键字break是可选的,但它通常在每个分支的结尾,以中止switch的语句的剩余部分。如果没有出现break语句,则执行接下来的case语句。
  9. 表达式中的操作符按照括号、操作符优先级以及操作符结合规则所确定的次序进行求值。
  10. 括号用于强制求值的顺序以任何顺序进行。
  11. 具有更高级优先权的操作符更早的进行操作。对于同样优先级的操作符,它们的结合规则确定操作的顺序。
  12. 除了赋值运算符的所有二元操作符都是左结合的,赋值运算符号是右结合的。

编程练习题

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
           Scanner sc=new Scanner(System.in);
           System.out.println("请输入a、b、c的值");
           double a=sc.nextDouble();
           double b=sc.nextDouble();
           double c=sc.nextDouble();
           double delt=b*b-4*a*c;
           if(delt>=0) {
        	   if(delt>0) {
        		   System.out.println("有两个解");
        		   System.out.println((-b+Math.sqrt(delt))/2*a+"和"+(-b-Math.sqrt(delt))/2*a);
        	   }else {
        		   System.out.println(-b/2*a);
        	   }
           }else {
        	   System.out.println("无解");
           }
		}
	}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入代表今天日期的数字");
		int today = sc.nextInt();
		System.out.println("请输入今天之后的天数");
		int sinceday = sc.nextInt();
		int willday = (today + sinceday) % 7;
		switch (willday) {
		case 0:
			System.out.println("周日");
			break;
		case 1:
			System.out.println("周一");
			break;
		case 2:
			System.out.println("周二");
			break;
		case 3:
			System.out.println("周三");
			break;
		case 4:
			System.out.println("周四");
			break;
		case 5:
			System.out.println("周五");
			break;
		case 6:
			System.out.println("周六");
			break;
		default:
			break;
		}
	}
}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc = new Scanner(System.in);
		int random = (int) (Math.random() * 3);
		System.out.println("电脑产生的是" + random);
		System.out.println("请输入0、1或者2");// 依次代表石头、剪刀、布
		int in = sc.nextInt();
		if (in == 0) {
			if (random == 0) {
				System.out.println("平局");
			} else if (random == 1) {
				System.out.println("玩家赢");
			} else {
				System.out.println("电脑赢");
			}
		}
		if (in == 1) {
			if (random == 1) {
				System.out.println("平局");
			} else if (random == 2) {
				System.out.println("玩家赢");
			} else {
				System.out.println("电脑赢");
			}
		}
		if (in == 2) {
			if (random == 2) {
				System.out.println("平局");
			} else if (random == 1) {
				System.out.println("玩家赢");
			} else {
				System.out.println("电脑赢");
			}
		}

	}
}

在这里插入图片描述

  • 提示:一月和二月在这个公式里是用13和14表示的。所以需要将用户输入的月份1转换为13,将用户输入的2转换为14,同时年份改为前一年。
import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner scanner=new Scanner(System.in);
		//1.获取 年份 月 日
		System.out.print("Enter year:");
		int year=scanner.nextInt();
		System.out.print("Enter month:");
		int month=scanner.nextInt();
		System.out.print("Enter the day of the month:");
		int day=scanner.nextInt();
		//隐含计算 j 世纪数 k该世纪的第几年
		if(month==1||month==2){
			month+=12;
			year--;
		}
		int j=year/100;
		int k=year%100;
		int h=(day+26*(month+1)/10+k+k/4+j/4+5*j)%7;
		System.out.println(h);
		switch (h) {
		case 0:
			System.out.println("星期六");
			break;
		case 1:
			System.out.println("星期天");
			break;
		case 2:
			System.out.println("星期一");
			break;
		case 3:
			System.out.println("星期二");
			break;
		case 4:
			System.out.println("星期三");
			break;
		case 5:
			System.out.println("星期四");
			break;
		case 6:
			System.out.println("星期五");
			break;
		default:
			break;
		}
	}
}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入这个点的x坐标");
		double x = sc.nextDouble();
		System.out.println("请输入这个点的x坐标");
		double y = sc.nextDouble();
		if (x <= 200 && x >= 0) {
			if ((200 - x) / y >= 2) {
				System.out.println("点在三角形里面");
				return;
			} else {
				System.out.println("点在三角形外面");
			}
		}
	}
}

在这里插入图片描述

  • 思路
    在这里插入图片描述
import java.util.Scanner;
public class Demo4_3 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
       Scanner sc=new Scanner(System.in);
       System.out.println("请输入第一个矩形的中心点坐标和宽高");
       double x1=sc.nextDouble();
       double y1=sc.nextDouble();
    	double w1=sc.nextDouble();
    	double h1=sc.nextDouble();
    	System.out.println("请输入第二个矩形的中心点坐标和宽高");
    	double x2=sc.nextDouble();
        double y2=sc.nextDouble();
     	double w2=sc.nextDouble();
     	double h2=sc.nextDouble();
     	if(x2<=(w1/2-w2/2)+x1&&x2>=x1-(w1/2-w2/2)&&y2<=(h1/2-h2/2)+y1&&y2>=y1-(h1/2-h2/2)) {
     		System.out.println("第二个在第一个内");
     	}else if(x2>=(w1/2+w2/2)+x1||x2<=(x1-w1/2-w2/2)||y2>=(h1/2+h2/2)+y1||y2<=(y1-w1/2-w2/2)) {
     		System.out.println("第二个在第一个外");
     	}else {
     		System.out.println("重叠");
     	}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值