任务2:闰年判断

任务2:闰年判断

1.思路分析

1.1什么是闰年(Leap Year)?

闰年是为了更好的匹配地球绕太阳运行的时间而设定的年份,他有366天,比平年多出一天。

首先,公历中的普通闰年是指可以被4整除但不能被100整除的年份;而世纪闰年则是可以被400整除的整百数年份。这个规则是在1582年由格里高利改革时制定的,目的是为了纠正过去日历中累积的时间误差,使日历年与天文年保持一致。

其次,农历的置闰规则与公历不同,通常是根据农历的阴阳调和来确定哪些年份需叟增加一个闰月。这样做也是为了调整农历月份与太阳年的相对位置,保持节气和农事活动的一致性。

最后,由于地球围绕太阳公转的实际周期略长于365.25天,因此每四年会塔加一个额外的日子以弥补差距,这就是为什么会有闰年的原因。

简而言之,闰年的存任是为了校准日历年与天文年之问的差异,确保我们的时间和季节保持同步。

1.2闰年的两种情况

(1) 普通闰年
  可以被4整除但是不能被100整除的年份
(2)世纪闰年
  可以被400年整除的年份

1.3怎么写判断条件

(1)求余运算
(2)关系运算
(3)逻辑运算
(4)分条件:

  • 普通闰年
      year % 4 = = 0 && year %100 ! = 0
  • 世纪闰年
     year % 400 = = 0

(5)总条件

  • year % 4 = = 0 && year %100 !=0 || Year % 400 = = 0
  • year % 4 = = 0 && !(year %100 =0) || Year % 400 = = 0

2.编程实现

2.1创建包

net.zengjinyi根包里创建p02.t02子包
在这里插入图片描述

2.2创建类

net.zengjinyi.p02.t02包里创建JudgeLeapYear
在这里插入图片描述

package net.zengjinyi.p02.t02;

import java.util.Scanner;

/**
 * 功能:闰年判断
 * 作者:曾谨仪
 * 日期:2024年04月24
 */
public class JudgeLeapYear {
    public static void main(String[] args) {
        //声明部分
        int year;
        String result;
        Scanner sc = new Scanner(System.in);

        //输入部分
        System.out.print("输入年份");
        year = sc.nextInt();

        //处理部分
        if(year % 4 == 0 && year %100 !=0 || year % 400 == 0){
            result = year + "是闰年~";
        }else {
            result = year + "是平年";
        }

        //输出部分
        System.out.println(result);
    }
}

2.3运行结果,查看关系

(1)输入2024
在这里插入图片描述
(2)输入2025
在这里插入图片描述

3.知识讲解

3.1关系运算符与关系表达式

  • 关系运算符(relational operators)
    1.基本概念
     关系运算符用来对两个数值或变量进行比较(compare)
      true
      false
    2.运算符说明表
    在这里插入图片描述

      	==
      		equal to
      		200 is equal to100	false
      	!=
      		not equal to
      		200 is not equal to 100	true
      	<
      		less than	网页里的实义字符 -&lt;
      		200 is less than 100	false
      	>
      		greater than	网页里的实义字符 -&gt;
      		200 is greater than 100	true
      	<=
      		less than or equal to	网页里的实义字符 -&le;
      		200 is less than or equal to 100	false
      	>=
      		greater than or equal to
      		200 is greater than or equal to 100	true
    
  • 关系表达式(relational expressions)
    1.概念(concept)
     用关系运算符将常量或变量连接而成的式子
    2.实例(example)
     1.200 == 100
     2.200 !=100
     3.200 > 100
     4.200 < 100
     5.200 >= 100
     6.200 <= 100
     7.学生表查询
      学生表全部记录-50条
    在这里插入图片描述

  查询年龄在19岁以上的同学
   select * from t_student where age >19;
在这里插入图片描述
   满足条件的记录只有8条

  查询全班的女生
   SELECT * FROM t_student where sex=‘女’;
在这里插入图片描述
   满足条件的记录只有19条

  查询19岁以上的女生
   关系表达式只能表示简单条件(simple condition),现在是两个条件要同时满足,这个时候就需要用到逻辑运算符and,才能表示复合条件(compound condition)
   select id,name,sex age from t_student where sex = ‘女’ and age > 19;
在这里插入图片描述
   满足条件的记录只有3条

3.2逻辑运算符与逻辑表达式

  • 逻辑运算符(logical operators)
    1.基本概念
     用于对布尔类型的值或表达式进行逻辑判断的符号,返回值 true or false
    2.运算符说明表
    在这里插入图片描述

      !
      	not
      		logical not 逻辑非
      	!(5>4)
      		false
      &&
      	and
      		logical and 逻辑与
      	(5<4)&&(7>6)
      		false
      ||
      	or
      		logical or 逻辑或
      	(5<4) || (7>6)
      		true
    
  • 逻辑表达式(logical expressions)
    1.概念(concept)
     用逻辑运算符将关系表达式或逻辑值连接起来的式子,用来表示复合条件
    2.实例(example)
     java逻辑表达式:gender == “女” && age>19
     Mysql逻辑表达式:gender =‘女’ and age>19
     python逻辑表达式:gender == ‘女’ and age>19

3.3流程控制结构

  • 顺序结构(sequence structure)
    在这里插入图片描述
    一江春水向东流

  • 选择结构(selection structure)
    在这里插入图片描述
    鱼与熊掌不可兼得

  • 循环结构(loop structure)
    1.前测试循环
    在这里插入图片描述
    先买票后上车

2.后测试循环
在这里插入图片描述
先上车后买票

3.4选择结构

  • 单分支结构
    1.语法格式
    if(条件){
    语句组
    }
    如果只有一条语句,花括号可以省略
    建议不要省略花括号,结构显得更清晰
    2.执行情况
    如果条件成立,就执行语句组,否则啥也不做(do nothing)
    一般来说,在循环结构里嵌套一个单分支结构用作筛选(filter)
    3.案例演示
    筛选100以内能被3整除的奇数
    t02子包里创建FilterNumbers
    在这里插入图片描述

      package net.zengjinyi.p02.t02;
      
      /**
       * 功能:过滤数字
       * 作者:曾谨仪
       * 日期:2024年04月24
       */
      public class FilterNumbers {
          public static void main(String[] args) {
              for(int i = 1;i <= 100;i++){//循环头:初始条件;循环条件;更新条件
                  if(i % 3 == 0 && i % 2 == 1){//负责筛选
                      System.out.print(i + " ");
                  }
              }
          }
      }
    

    运行程序,查看结果
    在这里插入图片描述

  • 双分支结构
    1.语法格式
    if(条件){
    语句组1
    }else{
    语句组2
    }
    如果语句组1或语句组2只有一条语句,那么对应的花括号可以省掉,建议不要省掉花括号,这样结构显得更清晰
    2.执行情况
    双分支结构就是我们通常讲的“花开两朵,各表一枝”或者“鱼与熊掌不可兼得”。语句组1与语句组2,根据条件成立与否,只有一个会被执行。
    3.案例演示
    根据是否成年给出不同信息
    t02子包里创建MessageOnAge
    在这里插入图片描述

      package net.zengjinyi.p02.t02;
      
      import java.util.Scanner;
      
      /**
       * 功能:根据年龄给出不同信息
       * 作者:曾谨仪
       * 日期:2024年04月24
       */
      public class MessageOnAge {
          public static void main(String[] args) {
              int age;
              String messge;
              Scanner sc = new Scanner(System.in);
      
              System.out.print("输入年龄:");
              age = sc.nextInt();
      
              if (age>=18){
                  messge="欢迎访问~";
              }else {
                  messge="旁边凉快去~";
              }
      
              System.out.println(messge);
          }
      }
    

运行程序,查看结果
输入25
在这里插入图片描述
输入16
在这里插入图片描述

4.拓展练习

4.1计算三角形面积(选择结构版)

  • 思路分析
    1.先判断后计算
     判断
      三角形三边关系定理
      任意两边之和大于第三边
       a + b > c && b + c > a && c + a >b
    2.双分支
     构成三角形
      计算
        海伦公式
         先计算半周长 p = (a +b +c)/2
         构不成三角形 提示用户“构不成三角形”
         再计算面积 s = Math.sqrt(p*(p-a)(p-b)(p-c))

  • 代码实现
    t02子包里创建CalculateTriangleArea
    在这里插入图片描述

      package net.zengjinyi.p02.t02;
      
      import java.util.Scanner;
      
      /**
       * 功能:计算三角形面积
       * 作者:曾谨仪
       * 日期:2024年04月24
       */
      public class CalculateTriangleArea {
          public static void main(String[] args) {
              double a,b,c,p,s;
              String message;
              Scanner sc = new Scanner(System.in);
      
              System.out.print("输入a的长:");
              a = sc.nextInt();
              System.out.print("输入b的长:");
              b = sc.nextInt();
              System.out.print("输入c的长:");
              c = sc.nextInt();
      
              if(a+b>c&&a+c>b&&b+c>a){
                  message = "构成三角形";
                  p = (a +b +c)/2;
                  System.out.println("三角形周长:" + p);
                  s = Math.sqrt(p*(p-a)*(p-b)*(p-c));
                  System.out.println("三角形面积为:" + s);
              }else {
                  message ="构不成三角形";
              }
              System.out.println(message);
          }
      }
    
  • 运行程序,查看结果
    1.输入3,4,5
    在这里插入图片描述

    2.输入3,9,5
    在这里插入图片描述

4.2求解一元二次方程(选择结构版)

  • 思路分析
    先计算判别式delta,根据判别式符号计算
    delta >=0
    计算两个实根,并输出
    delta < 0
    提示用户“此方程没有实根~”

  • 代码实现
    t02子包里创建SolveQuadraticEquation
    在这里插入图片描述

      package net.zengjinyi.p02.t02;
      
      import java.util.Scanner;
      
      /**
       * 功能:求解一元二次方程
       * 作者:曾谨仪
       * 日期:2024年04月24
       */
      public class SolveQuadraticEquation {
          public static void main(String[] args) {
              //声明部分
              double a,b,c,delta,x1,x2;
              String result;
              Scanner sc = new Scanner(System.in);
              
              //输入部分
              System.out.print("a = ");
              a = sc.nextDouble();
              System.out.print("b = ");
              b = sc.nextDouble();
              System.out.print("c = ");
              c = sc.nextDouble();
              
              //处理部分
              delta = b * b - 4 * a * c;
              if(delta >= 0){
                  x1 = (-b + Math.sqrt(delta))/(2 * a);
                  x2 = (-b - Math.sqrt(delta))/(2 * a);
                  result = "x1 = " + x1 +"\nx2 = " + x2;
              }else {
                  result = "此方程没有实根~";
              }
              
              //输出部分
              System.out.println(result);
    
  • 运行程序,查看结果
    1.输入1,5,6
    在这里插入图片描述

    2.输入2,4,7
    在这里插入图片描述

5.总结提高

  • 重点掌握单分支和双分支结构
  • 难点在于正确书写关系表达式与逻辑表达式
  • 眼观百遍,不如手敲一遍
  • Practice makes perfect
  • 选择比努力更重要
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值