文章目录
- 项目一踏上Java开发之旅
- 任务一,安装配置JDK并开发第一个Java程序
- 安装JDK
- 安装JDK11
- 1.12 配置JDK
- 1.1.3开发java
- 任务二 搭建Java 集成开发环境InterlliJIDEA
- 1.2.1 安装Interlli IDEA
- 1.2.2 配置 InterlliJ IDEA
- • 1.2.3 创建项目. 包. 类
- 项目二.打好Java编程基础
- 任务一.计算圆的面积
- (一)编程实现
- 版本2. 用户输入半径,程序计算圆面积
- 版本3 .设定结果精度,满足用户的需求
- (三)扩展练习
- 1.有卡号计算幸运值
- 求一元二次方程
- 任务2.闰年判断
- (一)编程实现
- (二)讲解知识点
- (三)扩展练习
- 任务一1.计算圆的面积(选择结构版)
- 任务2. 求解一元二次方程
- 任务3.成绩等级评定
- (一)编程实现
- 方法一.采用并列式多分支结构评定成绩等级
- 方法二.采用嵌套是多分支结构评定成绩等级
- 方法三.采用延拓式分支结构评定成绩等级
- 方法四.采用开关式多分支结构评定成绩等级
- (二)讲解知识点
- (三)扩展练习
- 任务2.构建可进不可退的多级从菜单名单系统
- 名片管理系统
- 任务3.根据收入计算个人所得税
- #任务4.等差数列求和
- (一)编程实现
- (二)讲解知识点
- (三)扩展练习
- 任务1.打印水仙花数
- 任务5.打印九九乘法表
项目一踏上Java开发之旅
任务一,安装配置JDK并开发第一个Java程序
安装JDK
安装JDK11
1.12 配置JDK
1.1.3开发java
1.编写源程序
2.编译成字节码
3.解释执行类
任务二 搭建Java 集成开发环境InterlliJIDEA
1.2.1 安装Interlli IDEA
1.2.2 配置 InterlliJ IDEA
• 1.2.3 创建项目. 包. 类
• 项目: Java课程案列
• 包: net.huawei.p01.to2
• 类: HelloWorld
• 不接受命令行参数
• 运行程序,查看结果
• 接收多个命令行参数(字符串数组args,用for循环遍历)
• 修改程序,在运行,查看结果
项目二.打好Java编程基础
• 眼观百遍代码,不如手敲一遍
• 修炼编程功力,重在日积月累
任务一.计算圆的面积
• 输入圆半径,计算圆面积,输出结果
(一)编程实现
版本1.程序员指定半径,计算圆面积
• 缺点是跟用户之间没有互动
…mermaid
版本2. 用户输入半径,程序计算圆面积
· 用户可以输入整数, 也可输入实数
`输入整数,用sc.nextInt
版本3 .设定结果精度,满足用户的需求
要求结果保留两位小数
回想一下·=你们在Python里是怎么实现这个用户要求的,利用round()函数可以搞定
采用遮尾法,数据没变,只是现实两位小数
采用减尾法来处理
问题:如何接收键盘输入的包含空格的字符串?
输入字符串,用sc.next(),如果字符串里有空格,空格之后对字符不接收
如何才能接受包含空格的字符串呢? 那就要用到Java的缓冲字符输入流(BufferedResder)
如何进行异常处理,可以自己写, 也可以利用菜单生成处理框架
(三)扩展练习
1.有卡号计算幸运值
·员工卡号是四位整数[1000,9999],各位数字的和就是参加抽奖活动的幸运数字,biru4512,4+5+1+2=12,幸运数字就是12
·输入员工卡号,编程计算该员工的幸运数字
·方法一:直接拆分整数
·方法二:直接换成字符串来处理
·计算机科学家wirth在上个世纪70年代提出一个经典公式:程序=数据结构+算法,数据结构就是程序的基础,算法是程序的灵魂
求一元二次方程
任务2.闰年判断
· 什么是闰年?有两种情况:能被四整除但不能被100整除;能被400整除
·解决闰年判断问题,涉及三种运算:算术运算,关系运算,逻辑运算
·第一种闰年情况:year %40 && year % 100 !=0==
·第二种闰年情况year % 4000==
(一)编程实现
·在net. lixin.p02.t02包里创建Task02==类
·运行程序,查看结果
·闰年条件涉及两种运算符,逻辑==&&和逻辑或||,但是没有用逻辑非!==,请你修改闰年条件,能够将三种逻辑运算符都派上用场。(在Python里 :not and or)
(二)讲解知识点
·演示求余运算
·演示关系运算
演示逻辑运算
双分支结构,分支只有一条语句时,可以省掉花括号
(三)扩展练习
任务一1.计算圆的面积(选择结构版)
利用选择结构防范用户输入负的半径
单支结构一般用于把关或过滤。当然,大家可以用双分支结构来处理这个问题
要求每行只输入五个数,那么就需要一个计数变量‘count’
任务2. 求解一元二次方程
-∆>=0,输入两个数实数解。否则提示用户”此方程没有实根!”
-提示:计算平方根math.sqrt(bb-4a*c)
任务3.成绩等级评定
对百分制成绩进行评定
1(100,infty):超出范围
2.[90,100]:优秀·
3.[80,90]:良好
4.[70,80]:中等
5.[60,70]:及格
6.[0,60]:不及格
7.(0,infty):超出范围
(一)编程实现
方法一.采用并列式多分支结构评定成绩等级
· 思路:有多少种情况,就并列写多少个单分支,分支之间相互独立
-第一个分数段:$ score>100,score \in(100,+infty)$ 超出范围
-第二个分数段:$ 90 \ le score\le 100,score \in[90,100] $优秀
第三个分数段: $80 \ le score\lt 90,score \in[80,90] $良好
-第四个分数段:$70 \ le score\lt 80,score \in[70,80] $中等
-第五个分数段:$60 \ le score\lt 70,score \in[60,70] $及格
第六个分数段:不及格
-第七个分数段: $score\lt 0,score \in[-infty,0] $超出范围
-在’‘‘net.lixin.po1.t02’’'创建Task03_1
怎么解决这个问题呢?很简单 在处理部分之前将level的始化为空字符串
运行程序查看结果,(测试七种情况)
-总结:并列式多分支结构,优点是易于理解,但缺点是效率低(思考一下,为什么效率低)
-其实,这个程序可以作出优化,因为成绩大于100分或者小于0分的都是超出范围的,所以可以将这两个并列式的分支合二为一
方法二.采用嵌套是多分支结构评定成绩等级
-在net.lixin.p02.src包里创建Task03_2类
import java.util.Scanner;
/**
- 功能
- 作者:李信
- 日期:2022年03月31日
*/
public class Task03_2 {
public static void main(String[] args) {
//声明部分
int score;
String level;
Scanner sc = new Scanner(System.in);
//输入部分
System.out.println(“score”);
score = sc.nextInt();
//处理部分
level = “”;
if (score > 100) {
level = “超出范围”;
} else {
if (score >= 90) {
level = “优秀”;
} else {
if (score >= 80) {
level = “良好”;
} else {
if (score >= 70) {
level = “中等”;
} else {
if (score >= 60) {
level = “及格”;
} else {
if (score >= 0) {
level = “不及格”;
} else {
level = “超出范围”;
}
}
}
}
}
}
//输出部分
System.out.println(level);
}
}
-运行程序,查看结果(测试七种情况)
思路二.从高到低来划分各个分数段
-在net.lixin.p02.src包里创建==Task03_2_==类
-运行程序,查看结果(测试七种情况)
-总结:采用嵌套是多分支结构,优点是层次分明,效率高,但缺点是嵌套式层次太多时显得很繁。
方法三.采用延拓式分支结构评定成绩等级
-思路一:从高到低分来划分各个分数段
-在net.lixin.p02.src包里创建task03_3类
-运行程序,查看结果(测试七种情况)
-思路二:从第分到高分来划分分数段
-在net.lixin.src包里创建==Task03_3_==类
-运用程序,查看结果(测试七种情况)
-总结:延拓式多分支结构:优点是只有一层,并且效率高。一定要掌握这种多分支结构
方法四.采用开关式多分支结构评定成绩等级
-关键点在于将成绩变量整除10,以便将各个分数段转换成离散的整数值,这样才能用开关式多分支结构来进行处理。
-在net.lixini.src包里创建Task03_4类
-运用程序,查看结果。(测试七种情况)
-总结:开关式多分支结构,优点是书写简洁,并且效率高,但缺点是只针对离散性的情况进行处理。开关式多分支结构里的测试表达式,类型可以是整数字符甚至可以是字符串
(二)讲解知识点
-多分支结构可以有四种处理方式:并列式 嵌套式 延拓式 开关式
(三)扩展练习
-要求输入年 月 日,最好能判断用户输入的是否是合法日期‘
-比如2022年3月31日,那是今年的第九十天(31+28+31=90)
-比如2022年3月31日,那是今年的第九十一天(31+29+31=91)
任务2.构建可进不可退的多级从菜单名单系统
名片管理系统
1.登录 (1)添加名片
(2)修改名片
(3)查询名片
(4)删除名片
2.退出
-采用开关式多分支结构来实现菜单系统
-在net.lixin.src包里创建XExercise02类
-先完成一级菜单
-运行程序,查看结果
-采用模块化思想,创建一个登录方法login(),然后再用户选择1菜单时调用它
-编写==login()==方法
-运用程序。测试登录方法
登陆成功后,定义名片管理的方法cardManagment()
-编写cardManagement方法代码
-运用程序,测试名片管理方法
-现在这个菜单系统是可进但不可退。有一个入口但有多个入口,等我们学了循环结构之后我们就可以改进这个菜单系统,使之成为可进可退的多级菜单系统,保证只有唯一的出口
任务3.根据收入计算个人所得税
-个人所得税税率表一(综合所得适用)
#任务4.等差数列求和
-任务:计算1+2+3+…+100的值
(一)编程实现
-创建net.lixin.src包,然后在包里创建Task04
-i++:后自增,先用后增
-运用程序,查看结果
-其实1+2+3+…+100跟100+99+…+3+2+1是等值的,因此for循环可以从100递减循环到1来计算
-大家不妨编程计算一下1+3+5+…+99
-第一种和第二种方法都循环了100次,但是第三种方法只循环了50次,效率更高些
(二)讲解知识点
(1)执行流程
-当循环条件成立时,执行循环,直到循环条件不成立时,终止循环
2.自增自减运算
(1)自增运算
-后自增:先用后增
-先自增:先增后用
(2)自减运算
-后自减:先用后减
-前自减:先减后用
(三)扩展练习
任务1.打印水仙花数
-所谓水仙花数,是指等于其个位数字立方和的三位数、
-分析问题首先水仙花是三位数,那么我们可以确定范围:[100,999],这个我们可以通过循环结构来搞定:
for(int n = 100; n<=999; n==)
...
}
-然后对这个范围的每个数n,我们都要去判断它是否等于其各位数字立方和,这里的难点或关键在于如何分解一个三位数,得到她的每位数字
-假设我们已经把三位数n分解成百位数p3,十位数p2,个位数p1,这样我们的筛选条件就可以写出来n==p3p3p3+p2p2p2+p1p1p1.
-如何拆分一个三位数你(375)呢?
-首先求n的个位数:n%10=375%10=5
然后要将三位数变成两位数:n=n/10=375/10=37
对于新的两位数,有求它的个位数:n%10=37/10=7
然后要将两位数变成有一位数:n=n/10=37/10=3
我们可以交替使用求余和整出运算将一个三位数拆分,得到它的个位数 十位数 百位数
当然这个分解方法可以推广到任何多为拆分
任务5.打印九九乘法表
在net,licin.src=-包里创建Task05==类