java SE教程04
三种程序结构 – 重点
顺序执行结构
- 执行完毕上一行代码, 执行当前行代码 (逐行执行)
判断分支结构
- 根据判断结果, 分为两种情况, 分别执行不同区域的代码
循环结构
- 再某些特定的情况下 ,一个代码块 循环的执行 !
任何程序的逻辑, 都可以通过这三种程序结构, 来搭配实现 !
判断分支 if结构 – 重点
在进行if语句的编写时, 如果判断的代码块中只有一行代码, 可以省略大括号
格式1:
if(boolean表达式){
//判断代码块
}
与顺序执行结构 有点区别: 判断代码块中的代码, 只有当关系表达式的结果为true时 , 才会执行 !
练习:
- 接收用户输入一个int值, 判断是否大于1000 , 如果大于则打印
:您输入的值过大
- 观察如下代码, 通过补充代码, 完成注释中的需求:
import java.util.Scanner;
public class Demo2{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print(“请输入第1个数:”);
int a = input.nextInt();
System.out.print(“请输入第2个数:”);
int b = input.nextInt();
System.out.print(“请输入第3个数:”);
int c = input.nextInt();
System.out.print(“请输入第4个数:”);
int d = input.nextInt();
//通过分支结构 ,找到最大的那个数字, 并输出打印:
int max1 = b;if(a>b){max1 = a;}int max2 = d;if(c>d){max2 = c;}int max = max2;if(max1>max2){max = max1;}System.out.println("最大值为:"+max);}
}
格式2:
if(boolean表达式){
当表达式结果为true时 , 执行这里的代码
}else{
当表达式的结果位false时 ,执行这里的代码
}
案例:
import java.util.*;
public class Demo3{public static void main(String[] args){//用户输入两个数字, 我将最大的数字输出Scanner input = new Scanner(System.in);System.out.print("请输入两个数字,使用空格隔开:");int a = input.nextInt();int b = input.nextInt();if(a>=b){ System.out.println("您输入的两个数字中, 最大的是:"+a);}else{System.out.println("您输入的两个数字中, 最大的是:"+b);}}
}
格式3:
if(boolean表达式1){如果boolean表达式1的结果为true , 则这里代码执行
}else if(boolean表达式2){如果boolean表达式1的结果为false,且boolean表达式2的结果为true , 则这里代码执行...}else if(booolean表达式n){上述所有表达式 , 只有n的结果为true时 , 则这里代码执行
}
格式4.
if(boolean表达式1){
如果boolean表达式1的结果为true , 则这里代码执行
}else if(boolean表达式2){
如果boolean表达式1的结果为false,且boolean表达式2的结果为true , 则这里代码执行
…
}else if(booolean表达式n){上述所有表达式 , 只有n的结果为true时 , 则这里代码执行
}else{上述所有表达式 , 结果都为false时 , 则这里代码执行
}
练习:
设计一款程序, 需求: 提示用户输入学生的考试程序, 我们帮他判断学生成绩的等级 : 用户输入的内容 是整型的数字: 0-100;
成绩==100 : 等级为 完美
成绩>=90分: 等级为 优秀
成绩>=70分: 等级为 良
成绩>=60分: 等级为 及格
成绩>=0 : 等级为不及格
其他成绩: 提示输入错误 !
练习:
出租车计费方式:由里程钱数和等候时间钱数相加得出。
里程数前3公里10元,超过3公里到15公里部分每公里2元,15公里以上部分每公里3元。
等候时间每2分半1元,不足部分不要钱。
输入公里数和等候秒数,输出车费。
比如: 16公里,等候290秒,车费 = 10 + (15-3)*2 + (16-15)*3 + 1 = 38 - 提示用户输入里程 与 等待时长, 计算价格: import java.util.Scanner;
public class Demo5{public static void main(String[] args){Scanner input = new Scanner(System.in);System.out.print("请输入公里数:");int km = input.nextInt();System.out.print("请输入等候时长:");int s = input.nextInt();//计算等待时长需要的钱int money = s/150;if(km>15){money = money+(km-15)*3+(15-3)*2+10;}else if(km>3){money = money+(km-3)*2+10;}else{money+=10;}System.out.println("本次出租车的付款金额为:"+money+"¥");}
}
判断分支结构 选择 switch-case – 熟练掌握
语法结构:
switch(表达式){case 值1: //表达式的结果与当前值1相同则执行这里的代码break;case 值2: //表达式的结果与当前值2相同则执行这里的代码break;....case 值n: //表达式的结果与当前值n相同则执行这里的代码break;default: //表达式的结果与上面的所有值都不同, 则执行这里的代码break;
}//xxx
注意: default 块可以省略不写 !
例如:
int a = 10;
switch(a){
case 100:
System.out.println(“第一个选项”);
case 10:
System.out.println(“第二个选项”);
break;
case 11:
System.out.println(“第三个选项”);
}
System.out.println("结束");
表达式的结果类型 :
int
byte
char
short
再jdk7.0 switch 支持了字符串类型的表达式
练习
1. 董飞去参加 比浪大会 ~ 如果董飞获得第一名, 将出任浪林盟主 !如果董飞获得第二名, 将出任浪林副盟主 ! 如果董飞获得第三名, 将退出浪林界, 嫁给旭东 ~ 获得其他名次, 则重新修炼, 等待东山再浪 ~ import java.util.*;public class Demo7{public static void main(String[] args){Random r = new Random();//随机产生董飞的名次int a = r.nextInt(3)+1;System.out.println("随机结果为:"+a);switch(a){case 1: System.out.println("恭喜董飞获得第一名, 出任浪林盟主");//break;case 2: System.out.println("恭喜董飞获得第二名, 出任浪林副盟主");//break;case 3: System.out.println("很遗憾 , 董飞获得了第三名, 决定退出浪林界, 嫁给旭东");//break;default: System.out.println("董飞因为气球买多了, 肾有点不好, 耽误了行程,没有参加比浪大会");//break;}} }2. 提示用户输入1-12月份, 我们帮用户判断对应的季节并输出到控制台 !import java.util.Scanner;
public class Demo8{public static void main(String[] args){Scanner input = new Scanner(System.in);System.out.println("请输入一个月份(1-12) , 我来计算季节: ");int m = input.nextInt();switch(m){case 3:case 4:case 5:System.out.println("您输入的季节为春天");break;case 6:case 7:case 8:System.out.println("您输入的季节为夏天");break;case 9:case 10:case 11:System.out.println("您输入的季节为秋天");break;case 12:case 1:case 2:System.out.println("您输入的季节为冬天");break;default:System.out.println("是不是傻");break;}}}
练习:
模拟命令解析器(菜单)
使用switch-case结构实现
输入1打印显示所有用户,
输入2显示增加新用户,
输入3显示修改用户信息,
输入4显示删除用户,
输入5显示退出。
import java.util.Scanner;
public class Demo9{
public static void main(String[] args){
System.out.println(“———员工管理系统———”);
System.out.println(“———请操作: ———”);
Scanner input = new Scanner(System.in);
int type = input.nextInt();
switch(type){case 1: System.out.println("---------显示所有用户------");break;case 2: System.out.println("---------增加新用户 ------");break;case 3: System.out.println("---------修改用户信息------");break;case 4: System.out.println("---------4. 删除用户---------");break;case 5: System.out.println("---------5. 退出---------");break;}System.out.println("程序执行结束");}
}
循环结构
生活中带有重复元素的事情:
使用循环的步骤:
1. 分析一个业务中 具备的 [循环元素 ]2. 分析这个循环元素中的 循环条件 和 循环的操作3. 套用循环的代码 (可以是while循环, 可以是for循环)4. 检查循环是否能够退出 ! (除非遇到特殊的需求, 一般情况下尽量避免死循环的操作)
面试题:
while循环与do while循环的区别:
特点:
while循环: 先判断 , 再执行
do while 循环: 先执行 , 再判断
区别:
区别只在于 如果循环条件最初就不满足时 ,
while循环不会执行循环代码块,
而do while循环 会执行一次循环代码块
三种循环
while循环
语法格式:
while(1.boolean表达式){
//2.循环代码块
//当boolean类型表达式为true时 , 执行这里的代码
}执行流程:
jvm遇到while时 , 首先执行: 1. 判断boolean表达式结果是否为true 2. 如果为true则执行循环代码块 ,否则跳过循环代码块!然后重复执行第一步, 第二步 , 直到boolean类型表达式结果为false , 则循环结束 ,跳过循环代码块 !
练习:
向控制台输出数字: 1.2.3.4.5.6…100
boolean flag = true;
int count = 1;
while(flag){
if(count==100){
flag = false;
}
System.out.println(count++);
}- do while循环
语法结构:
do{
//循环代码块
}while(boolean表达式);
do while循环:
先执行一次循环代码块, 再判断boolean表达式
练习:
向控制台输出数字: 100.99.98.97...1int count = 100;
do{System.out.println(count--);}while(count==0);
for循环
语法格式:
for(初始化循环参数;boolean表达式;更新循环变量){循环代码块 } for循环执行流程: 1. 初始化循环参数2. 判断boolean类型表达式结果是否为true 为true则循环, false则循环结束3. 执行循环代码块4. 更新循环变量在这里4个步骤中循环的是 2 3 4
for循环与while循环:
while(true){} 等价于: for(;true;){}//1. 定义循环变量
int count = 1;//2. 判断boolean表达式
while(count <=100 ){//3. 循环体执行//4.更新循环变量;count++;
}//累加: 1+2+3+4...+100
int sum = 0;
//1. 定义循环变量
int count = 1;
//2. 判断循环条件
while(count<=100){//3. 执行循环代码sum+=count;//4. 更新循环变量count++;
}
System.out.println(sum);
int sum = 0;
for(int count=1;count<=100;count++){sum+=count;
}
System.out.println(sum);
练习:
找出1-1000这些数字中的水仙花数 :
1 5 3 = 1^3 + 5^3 + 3^3水仙花数: 数字的值, 等于 各个位数上的数字的立方和
使用循环的步骤:
1. 分析一个业务中 具备的 [循环元素 ]100-10002. 分析这个循环元素中的 循环条件 和 循环的操作循环变量小于1000 , 循环操作:判断一个数字是否为水仙花数3. 套用循环的代码 (可以是while循环, 可以是for循环)for(int i=100;i<1000;i++){}有一个三位的未知数i , 求它是不是水仙花数999/100 = 9 999%100= 99/10 = 9 999%10 = 9958/100 = 9 958%100= 58/10 = 5 958%10 = 8900/100 = 9 900%100= 0/10 = 0 900%10 = 0计算百位数: 这个数字除以100 , 得到的结果就是百位数的数字计算十位数: 这个数字模以100 , 再除以10 , 得到的结果就是十位数计算个位数: 这个数字模以10 , 结果为个位数 !3 7 027 343 04. 检查循环是否能够退出 ! (除非遇到特殊的需求, 一般情况下尽量避免死循环的操作)
跳出循环:
break; 这个关键字, 用于跳出代码块 , 再循环中的含义就是: 立即跳出并结束循环案例: for(int i=0;i<100;i++){if(i==10){break;}System.out.println(i);
}
跳出本次循环体
continue : 用于再循环中, 结束本次循环体, 开始下次循环体
for(int i=0;i<100;i++){if(i==10){continue;}System.out.println(i);
}
多重循环
循环的两层嵌套
例如: for循环的嵌套:
外层循环里面的逻辑, 依然是具备循环色彩的!for(;;){for(;;){}
}
案例:
输出10次 1-10
for(int j=0;j<10;j++){
for(int i=1;i<=10;i++){
System.out.print(i+” “);
}
System.out.println();
}
多层循环打印行和列时 , 外层循环控制的是 有多少行 内层循环控制的是有多少列
案例:
通过循环嵌套, 打印99乘法表1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9....
第1 行 有1列
第2 行 有2列
for(int i=1;i<=9;i++){//外层循环控制行, 表示有9行//列的长度是变化的, 与i相同for(int j=1;j<=i;j++){System.out.println(j+"*"+i+"="+(j*i));}}
作业:
1. 使用*号, 打印三角形:
(1)
*
* *
* * *
* * * *
* * * * *for(){for(){}
}
(2)
----*
---***
--*****
-*******
*********for(){for(){}for(){}}
(3)
—-*
—*
–*
-*
–*
—*
—-*
(4)
----*
---* *
--* *
-* *
--* *
---* *
----*
java SE教程04相关推荐
- java SE 教程 10
Eclipse的使用 打开eclipse , 选择对应的工作空间 调整视图 创建工程 再Eclipse中 工作空间中可以包含多个 工程/项目 , 一个工程中包含多个Java类 创建Java类, 编写代 ...
- java中的jpa_JPA教程–在Java SE环境中设置JPA
java中的jpa JPA代表Java Persistence API,它基本上是一个规范,描述了一种将数据持久存储到持久存储(通常是数据库)中的方法. 我们可以将其视为类似于Hibernate之类的 ...
- JPA教程–在Java SE环境中设置JPA
JPA代表Java Persistence API,它基本上是一个规范,描述了一种将数据持久存储到持久存储(通常是数据库)中的方法. 我们可以将其视为类似于Hibernate的 ORM工具的东西,除了 ...
- Java基础教程【第一章:Java概述】
章节目录 1. JAVA 的发展史 2. JAVA 面向对象 3. JAVA 语言介绍.语言特性 4. JVM 虚拟机 1."一次编译,到处运行"的原理 2.JDK( Java D ...
- [转] Java快速教程
[转] Java快速教程 转自:Vamei的Java快速教程 2015-07-03 安装环境 Step 1: Eclipse JDK 下载.安装.配置 (download.install.deploy ...
- java se 与j2se_关于java:J2EE和J2SE项目之间的区别
本问题已经有最佳答案,请猛点这里访问. 我已经从github下载了一个开源项目. 这是一个基于Maven的项目. 我如何理解该项目是J2SE项目还是J2EE项目? 这两种项目在结构上有何不同? Jav ...
- Java快速教程--vamei 学习笔记(基础篇)
链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:ht ...
- Java并发教程(Oracle官方资料)
2019独角兽企业重金招聘Python工程师标准>>> 本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递. (关注ITeye官微,随时随地查看最新开发资讯. ...
- macos自带java_在 MacOS 上安装 Java - Java 入门教程
本小节我们将介绍如何在 MacOS 平台安装 Java . 如果你想在其他平台安装 Java,请查看对应平台的安装教程: 1. 下载安装包 我们首先打开 Oracle 官网的 JDK 下载地址,找到 ...
- Java学习教程整理
Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...
最新文章
- 我,14岁初中生,从零开始拿到了Kaggle竞赛冠军
- TCP层,flags字段标识位含义说明
- 海外区域财务共享中心建设
- Python中self的用法
- 统计学习方法第十六章作业:PCA主成分分析算法 代码实现
- Ulua_toLua_基本案例(八)_LuaAccessingArray
- codeforces 356C Bear and Square Grid
- try to navigate from SAP UI5 button to line item page
- Java mail 发送邮件 主题(标题)乱码
- 大厂首发:338页网易Java面试真题解析火爆全网
- JavaNIO - Scatter Gather
- Oracle之唯一性约束(UNIQUEConstraint)用法详解
- 超链接a标签的伪类选择器问题,Link标签与visited标签的失效问题(问题介绍与解决方法)。以下全部内容跟可通过鼠标左键选取后,复制到编辑器中直接运行。
- 从0开始html前端页面开发_CSS设置图像透明度
- python用正则表达式提取中文_用正则表达式从Python中的字符串中提取数字
- 测试空间大数据软件(Hadoop + HBase + GeoWave + GeoServer)
- win10 cortana 没反应解决方法
- Seagull PHP框架学习教程之二
- Linux 重启nginx服务
- 好好上个网不容易:2016上半年网络安全事件盘点