文章目录
任务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 网页里的实义字符 -< 200 is less than 100 false > greater than 网页里的实义字符 -> 200 is greater than 100 true <= less than or equal to 网页里的实义字符 -≤ 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
- 选择比努力更重要