三种程序结构 – 重点

  1. 顺序执行结构

    • 执行完毕上一行代码, 执行当前行代码 (逐行执行)
  2. 判断分支结构

    • 根据判断结果, 分为两种情况, 分别执行不同区域的代码
  3. 循环结构

    • 再某些特定的情况下 ,一个代码块 循环的执行 !

任何程序的逻辑, 都可以通过这三种程序结构, 来搭配实现 !
判断分支 if结构 – 重点

在进行if语句的编写时, 如果判断的代码块中只有一行代码, 可以省略大括号
格式1:

if(boolean表达式){
//判断代码块
}

与顺序执行结构 有点区别: 判断代码块中的代码, 只有当关系表达式的结果为true时 , 才会执行 !

练习:

  1. 接收用户输入一个int值, 判断是否大于1000 , 如果大于则打印

:您输入的值过大

  1. 观察如下代码, 通过补充代码, 完成注释中的需求:

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循环 会执行一次循环代码块
三种循环

  1. 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++);
    }

  2. do while循环

语法结构:

do{
//循环代码块
}while(boolean表达式);

do while循环:

先执行一次循环代码块, 再判断boolean表达式

练习:

向控制台输出数字:  100.99.98.97...1int count = 100;
do{System.out.println(count--);}while(count==0);
  1. 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相关推荐

  1. java SE 教程 10

    Eclipse的使用 打开eclipse , 选择对应的工作空间 调整视图 创建工程 再Eclipse中 工作空间中可以包含多个 工程/项目 , 一个工程中包含多个Java类 创建Java类, 编写代 ...

  2. java中的jpa_JPA教程–在Java SE环境中设置JPA

    java中的jpa JPA代表Java Persistence API,它基本上是一个规范,描述了一种将数据持久存储到持久存储(通常是数据库)中的方法. 我们可以将其视为类似于Hibernate之类的 ...

  3. JPA教程–在Java SE环境中设置JPA

    JPA代表Java Persistence API,它基本上是一个规范,描述了一种将数据持久存储到持久存储(通常是数据库)中的方法. 我们可以将其视为类似于Hibernate的 ORM工具的东西,除了 ...

  4. Java基础教程【第一章:Java概述】

    章节目录 1. JAVA 的发展史 2. JAVA 面向对象 3. JAVA 语言介绍.语言特性 4. JVM 虚拟机 1."一次编译,到处运行"的原理 2.JDK( Java D ...

  5. [转] Java快速教程

    [转] Java快速教程 转自:Vamei的Java快速教程 2015-07-03 安装环境 Step 1: Eclipse JDK 下载.安装.配置 (download.install.deploy ...

  6. java se 与j2se_关于java:J2EE和J2SE项目之间的区别

    本问题已经有最佳答案,请猛点这里访问. 我已经从github下载了一个开源项目. 这是一个基于Maven的项目. 我如何理解该项目是J2SE项目还是J2EE项目? 这两种项目在结构上有何不同? Jav ...

  7. Java快速教程--vamei 学习笔记(基础篇)

    链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:ht ...

  8. Java并发教程(Oracle官方资料)

    2019独角兽企业重金招聘Python工程师标准>>> 本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递. (关注ITeye官微,随时随地查看最新开发资讯. ...

  9. macos自带java_在 MacOS 上安装 Java - Java 入门教程

    本小节我们将介绍如何在 MacOS 平台安装 Java . 如果你想在其他平台安装 Java,请查看对应平台的安装教程: 1. 下载安装包 我们首先打开 Oracle 官网的 JDK 下载地址,找到 ...

  10. Java学习教程整理

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...

最新文章

  1. 我,14岁初中生,从零开始拿到了Kaggle竞赛冠军
  2. TCP层,flags字段标识位含义说明
  3. 海外区域财务共享中心建设
  4. Python中self的用法
  5. 统计学习方法第十六章作业:PCA主成分分析算法 代码实现
  6. Ulua_toLua_基本案例(八)_LuaAccessingArray
  7. codeforces 356C Bear and Square Grid
  8. try to navigate from SAP UI5 button to line item page
  9. Java mail 发送邮件 主题(标题)乱码
  10. 大厂首发:338页网易Java面试真题解析火爆全网
  11. JavaNIO - Scatter Gather
  12. Oracle之唯一性约束(UNIQUEConstraint)用法详解
  13. 超链接a标签的伪类选择器问题,Link标签与visited标签的失效问题(问题介绍与解决方法)。以下全部内容跟可通过鼠标左键选取后,复制到编辑器中直接运行。
  14. 从0开始html前端页面开发_CSS设置图像透明度
  15. python用正则表达式提取中文_用正则表达式从Python中的字符串中提取数字
  16. 测试空间大数据软件(Hadoop + HBase + GeoWave + GeoServer)
  17. win10 cortana 没反应解决方法
  18. Seagull PHP框架学习教程之二
  19. Linux 重启nginx服务
  20. 好好上个网不容易:2016上半年网络安全事件盘点

热门文章

  1. bilibili笔试题
  2. excel文件解密打开密码
  3. 兜兜转转~~,忘不了的break!! 忘不了的continue!!!!
  4. 追寻职业榜样计算机论文翻译,追寻职业榜样征文
  5. 单元测试,我有话说(No tests to run. No tests were executed)
  6. c语言验证费马大定理,费马大定理,用电脑编程证明
  7. 第一次团队作业——团队选题报告
  8. 台式计算机进入安全模式蓝屏,电脑进入安全模式蓝屏怎么办?
  9. 关于ADL的查找顺序
  10. 新手操作孕妇防辐射服暴利项目,也能日入500+