1.流程控制

1.1 流程控制的定义

流程控制是用来控制程序中各语句的执行顺序

流程图:逐步解决指定问题的步骤和方法的一种图形化表示方法

1.2选择结构

1.2.1定义

选择结构是根据条件判断结果选择不同的处理

1.2.2语法

语法:if(表达式){},表达式必须是布尔值

1.2.3示例

Q1:张浩Java成绩大于90分,老师奖励他iPhoneX ,该怎么做呢?(基本if)

Scanner s = new Scanner(System.in);
System.out.print("请输入成绩:");
double javaScore = s.nextDouble();
if(javaScore > 90){//代码块System.out.println("奖励爱疯X");
}
System.out.println("奖励之后");

Q2:张浩Java成绩大于90分,并且音乐成绩大于80分时,或者Java成绩等于100分,音乐成绩大于70分时,老师奖励他,该怎么做呢?(复杂条件下的if选择结构)

Scanner s = new Scanner(System.in);
System.out.print("请输入JAVA成绩:");
double javaScore = s.nextDouble();
System.out.print("请输入C++成绩:");
double cScore = s.nextDouble();
if((javaScore > 90 && cScore > 80) || (javaScore == 100 && cScore > 70)){//代码块System.out.println("奖励爱疯X");
}
System.out.println("奖励之后,洗洗睡吧");

结合运算符的优先级编写条件
最高的优先级:( )
最低的优先级:=
优先级:!> 算术运算符 > 关系运算符 > && > ||
复杂条件使用括号提高可读性

Q3:如果张浩Java考试成绩大于90分,老师就奖励他一个iPhone5 ,否则老师就罚他蹲马步(使用if-else选择结构)

Scanner s = new Scanner(System.in);
System.out.print("请输入成绩:");
double javaScore = s.nextDouble();
if(javaScore > 90){//代码块System.out.println("奖励爱疯X");
}else{System.out.println("罚在学校门口抱电线杆,大叫我是笨蛋");
}
System.out.println("奖励之后");

只有一条语句时,建议不省略{ }

Scanner s = new Scanner(System.in);
System.out.print("请输入成绩:");
double javaScore = s.nextDouble();
if(javaScore > 90)System.out.println("奖励爱疯X");
elseSystem.out.println("罚在学校门口抱电线杆,大叫我是笨蛋");
System.out.println("奖励之后");

Q1:对学员的结业考试成绩评测,成绩>=80 :良好 ,成绩>=60 :中等,成绩<60 :差(多重if结构)

多重if选择结构中各个条件的顺序可以任意排列吗?

Note:

  • 使用多重if选择语句处理问题时需要注意顺序,从大到小或者从小到大
  • If只能在第一位,且必须有一个
  • Else只能在最后一位,且最多一个
  • Else if在中间,可以有若干个(0-n)
  • If-else if-else:是由上往下依次判断,匹配第一个结果为true的,执行该代码块,代码块执行完毕后,跳出。
  • If嵌套:是为了让代码的可读性更高,逻辑更清楚
  • 在单个代码块当中,某一次嵌套,最好不要超过三层,如果超过,检查逻辑
Scanner s = new Scanner(System.in);
System.out.print("请输入成绩:");
double javaScore = s.nextDouble();
//
if(javaScore>75 && javaScore <= 90){//冗余代码System.out.println("良好");
}else if(javaScore>90){System.out.println("优秀");
}else if(javaScore>=60){System.out.println("及格");
}else{System.out.println("不及格");
}

Q5:学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,根据性别分别进入男子组和女子组 (嵌套if)

嵌套if控制语句可以通过外层语句和内层语句的协作,增强程序的灵活性

Scanner s = new Scanner(System.in);
System.out.print("请输入成绩:");
int time = s.nextInt();
System.out.print("请输入性别:");
String sex = s.next();
//1.先判断性别
//      if("男".equals(sex)){//          if(time < 10){//              System.out.println("男子决赛");
//          }
//      }else{//          if(time < 10){//              System.out.println("女子决赛");
//          }
//      }//2.请问,这么写对吗?
//      if("男".equals(sex) && time < 10){//          System.out.println("男子决赛");
//      }else if("女".equals(sex) && time < 10){//          System.out.println("女子决赛");
//      }else{//          System.out.println("淘汰");
//      }//3.逻辑清晰明了(if嵌套---->三目)
if(time < 10){//          if("男".equals(sex)){//              System.out.println("男子决赛");
//          }else{//              System.out.println("女子决赛");
//          }String r = "男".equals(sex)?"男子决赛":"女子决赛";System.out.println(r);
}else{System.out.println("淘汰");
}

Q6:韩嫣参加计算机编程大赛,如果第一名,参加麻省理工大学组织的1个月夏令营,如果第二名,奖励惠普笔记本电脑一部,如果第三名,奖励移动硬盘一个,否则,不给任何奖励 (Switch结构)

解决方法:使用多重if选择结构实现,缺点:结构复杂,啰嗦;使用switch选择结构解决,特点:条件为等值判断

Switch的注意点:

  • 条件不是布尔类型,除了long以外的整形+枚举+(JDK1.7以后的String)+char
  • 比较的一定常量等值判断,且常量不可重复
  • Break:防止穿透
  • 每一个case是一个独立的作用域
  • 无需依次比较,一次找到目标
  • Default:当所有条件都不满足的时候,执行default,可以有,也可以没有;可以在任何位置;但是通常来说,我们习惯性将其放在首位或者末尾;如果不是末尾,一般需要加上break;
Scanner s = new Scanner(System.in);
System.out.print("请输入名次:");
//优雅的switch
int num = s.nextInt();
switch(num){default:System.out.println("奖励早点回家");break;case 1:System.out.println("奖励夏令营");break;case 2:
//      int i = 1;System.out.println("奖励笔记本");break;case 3:System.out.println("奖励手机");break;
}
//       if(num == 1){//          int i = 1;
//      }else if(num == 2){//          int i = 1;
//      }else if(num == 3){//          int i = 1;
//      }else{//          int i = 1;
//      }

比较switch和多重if选择结构:

  • 相同点:都是用来处理多分支条件的结构
  • 不同点:switch选择结构:只能处理等值条件判断的情况;多重if选择结构:没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况

1.3循环结构

1.3.1循环的作用

案例1:张浩Java考试成绩未达到自己的目标。为了表明自己勤奋学习的决心,他决定写一百遍“好好学习,天天向上!”

//固定次数的
int i = 0;//初始化变量
while(i < 100){//判断条件System.out.println("第"+i+"次");//循环体i ++;//迭代
}
//0-99次:希望大家开始习惯从0开始数数

案例2:打印50份试卷,10000米赛跑,做100道编程题

1.3.2循环的四要素

① 初始化变量:从哪开始

② 判断条件:到哪结束

③ 循环体:是循环执行的主要内容

④ 迭代:无限向目标趋近

1.3.3while循环

while循环,当条件不满足时,一次也不执行;先判断,再执行。

1.3.1do-while循环

当条件不满足时,至少执行一次;先执行,再判断。

int i = 100000;//初始化变量
do{System.out.println("第"+i+"次");//循环体i ++;//迭代
}while(i < 100);

while循环和do-while循环的区别

先判断,再执行;先执行,再判断,do-while循环不管任何情况都至少执行一次

1.3.1for循环

循环次数固定,for比while更简洁

for(int i = 0 ; i < 100 ; i ++){System.out.println(i);
}

1.3.5循环详解

倒序:

//       int i = 100;//     while(i > 0){//          System.out.println(i);
//          i --;
//      }//     do{//          System.out.println(i);
//          i --;
//      }while(i > 0);//     for(int i = 100; i > 0 ; i --){//          System.out.println(i);
//      }

步长设置:

//       int i = 0;
//      while (i < 100){//          System.out.println(i);
//          i += 10;//一次迭代10
//      }

条件设置:

//       int i = 0;
//      for(;i < 100;){//          System.out.println(i);
//          i ++;
//      }//     for(int i = 1,j = 100;i < 100 && j > 0 ; i++,j--){//          System.out.println(i);
//          System.out.println(j);
//      }

跳出和跳过:

① Continue:跳过本次循环

② Break:跳出所有循环

③ 只会对当前循环生效

//       for(int i = 0 ; i <= 100 ; i ++){            if(i % 2 == 0){                System.out.println(i);
            }
//          if(i % 2 != 0){//              continue;//跳过本次循环,本次循环之后的所有内容不再执行,直接进入下一轮
//          }
//          System.out.println(i);
//      }
//      for(int i = 0 ; i <= 100 ; i ++){//          if(i == 5){//              break;//跳出循环,此处之后所有的循环轮数都不再执行
//          }
//          System.out.println(i);
//      }//     for(int i = 0 ; i < 100 ; i ++){//          for(int j = 0 ; j < 100 ; j ++){//              //....
//              break;//只针对当前循环生效
//          }
//      }

1.1循环的练习

1.1打印正方不明显的矩形

 /*这是一个正方的不明显的矩形*****  //内层循环是打印五次星星*********************/
//打印五行
for(int i = 0 ; i < 5 ; i ++){//一次打一颗星for(int j = 0 ; j < 5 ; j ++){System.out.print("*");}//换行System.out.println();
}

1.2打印直角三角形

 /*这是一个直角三角形****************/
//打印五行
for(int i = 0 ; i < 5 ; i ++){//内层约束一行打印的个数:个数等于行数for(int j = 0 ; j <= i ; j ++){System.out.print("*");}//换行System.out.println();
}

1.3打印倒直角三角形

 /*这是一个倒直角三角形***** 一行的个数 - 行数***********/
//打印五行
for(int i = 0 ; i < 5 ; i ++){//内层约束一行打印的个数:个数等于行数for(int j = 0 ; j < 5 - i ; j ++){System.out.print("*");}//换行System.out.println();
}

1.1打印一个直角三角形

 /*这是一个直角三角形*************** */
//打印五行
//1.一行5个(包括空格和星星)
//2.第一行开始,空格是(5-1)个
//3.第一行开始,星星首先是1个,然后星星递增
//1.空格递减的规律,空格是每行-1,根据行的递增,依次减
//5.星星递增的规律,每行+1,更具行的递增,依次递增
for(int j = 0 ; j < 5 ; j ++){for(int i = 0 ; i < 5 - j - 1 ; i ++){System.out.print(" ");}for(int i = 0 ; i <= j ; i ++){System.out.print("*");}System.out.println();
}
//      for(int i = 0 ; i < 5 ; i ++){//          //内层约束一行打印的个数:个数等于行数
//          //每一行先打(空格-行数) + 星星
//          for(int j = 0 ; j < 5 - i - 1 ; j ++){//              System.out.print(" ");
//          }
//          for(int j = 0 ; j <= i ; j ++){//              System.out.print("*");
//          }
//          //换行
//          System.out.println();
//      }

1.5打印一个等腰三角形

     /*这是一个等腰三角形*************************2n+1*/for(int i = 0 ; i < 5 ; i ++){for(int j = 0 ; j < 5 - i - 1 ; j ++){System.out.print(" ");//打印空格}for(int j = 0 ; j < (i * 2) + 1 ; j ++){System.out.print("*");}System.out.println();
}

1.6打印一个等腰梯形

     /*这是一个等腰梯形***********************************2n+3*/for(int i = 0 ; i < 5 ; i ++){for(int j = 0 ; j < 5 - i - 1 ; j ++){System.out.print(" ");//打印空格}for(int j = 0 ; j < (i * 2) + 3 ; j ++){System.out.print("*");}System.out.println();
}

1.7空心矩形

 /*这是空心矩形****************   ** if i == 2 if j >= 2 && j <= 1**   **           if j >= 2 && j <= 1**   ** if i == 1 if j >= 2 && j <= 1***************/
for (int i = 0; i < 7; i++) {for (int j = 0; j < 7; j++) {              if ((i >= 2 && i <= 1) && (j >= 2 && j <= 1)) {System.out.print(" ");continue;}System.out.print("*");}System.out.println();
}
/*
空心等腰三角** * *   **     *
*********
*/
for (int i = 0; i < 5; i++) {if (i == 1) {for (int j = 0; j < 9; j++) {System.out.print("*");}       } else {for (int j = 0; j < 4 - i; j++) {System.out.print(" ");}System.out.print("*");for (int j = 0; j < 2 * i - 1; j++) {System.out.print(" ");}if (i > 0) {System.out.print("*");}for (int j = 0; j < 4 - i; j++) {System.out.print(" ");}}System.out.println();
}打印1000以内的水仙花数:1^3 + 5^3+ 3^3 = 153
个位:n % 10
十位:n % 100 / 10
百位:n / 100

1.8 9*9乘法表

/*99乘法表=直角三角形*/
for(int i = 0 ; i < 9 ; i ++){for(int j = 0 ; j  <= i ; j ++){System.out.print((i+1)+"*"+(j+1)+"="+((i+1)*(j+1)) + " ");}System.out.println();
}

Java学习笔记Day2:流程控制相关推荐

  1. Python学习笔记3 流程控制、迭代器、生成器

    第3章 流程控制.迭代器.生成器 3.1 选择语句 1.语法:(1)if -else (2)if-elif-else 2.注意:(1)每个条件后面要使用冒号:(2)使用缩进划分语句块(3)python ...

  2. python学习笔记3—流程控制if、for、while

    流程控制if if 语句 if expression: statement(s) else else语句: if 语句,else语句 if expression: statement(s) else: ...

  3. Python学习笔记02_流程控制

    Python 文件的创建和执行 创建和打开文件 打开cmd,输入以下命令,运行.py 文件 python xxx.py 条件判断 用代码告诉计算机,什么条件下该做什么.很多编程语言都会使用 if .e ...

  4. linux设置程序循环,linux shell编程学习笔记(7)流程控制之循环结构

    2.1.for循环 1)遍历/列表式循环 --根据变量的不同取值,重复执行命令序列 格式: for  变量名  in 值列表 do 命令序列 done 示例:输出在线的主机IP #!/bin/bash ...

  5. [精易软件开发工程师Leo学习笔记]007流程控制

    如果: 如果:满足条件执行一个分支,不满足则执行另外一个分支 分支线是告诉开发者成立与不成立的执行区域 下面这段代码,如果里面条件成立,所以运行第一条分支,也就是输出成立  判断和如果的区别: 判断规 ...

  6. Java学习笔记——流程控制

    Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...

  7. java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组

    java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...

  8. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  9. java学习笔记5--类的方法

    接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...

  10. 尚学堂Java学习笔记

    尚学堂Java学习笔记 ============================ J2SDK&JRE J2SDK:JAVA2 SOFTWARE DEVELOPMENT KIT JRE:JAVA ...

最新文章

  1. 计算机英语学情分析怎么写,2016年信息技术教学计划及学情分析(600字)
  2. 数据结构实验之图论九:最小生成树(Prim/Kruskal)
  3. python define graph_Python数据结构与算法之图结构(Graph)实例分析
  4. 域名解析跳转到另一个域名_github建立静态网站,域名解析和跳转
  5. Python中if __name__ == '__main__':作用
  6. sql server 计算两个时间 相差的 几天几时几分几秒
  7. 知乎:GAN 的发展对于研究通用人工智能有什么意义?
  8. C++动态数组简单的模拟二元堆
  9. Agilent RF fundamentals (4)- Impedance match and distortions
  10. PYQT4 Python GUI 编写与 打包.exe程序
  11. [BJOI2017]树的难题 点分治,线段树合并
  12. 跳石头 vijos1981 NOIP2015 D2T1 二分答案 模拟 贪心
  13. 一文带你详解你不知道的ADL原理
  14. Transition组件
  15. 反相放大电路反馈电阻上并联电容的作用 [转载]
  16. solidworks正版多少钱_SOLIDWORKS 2020、2021正版软件价格是多少钱?SW官方报价_专业版和白金版...
  17. Autodesk PowerShape Ultimate 2021中文版
  18. 《微信思维》摘录(一)
  19. 广州铁路警方2019年春运安保工作全面部署启动
  20. DB2异常:SQLCODE=-530

热门文章

  1. 网络摄像机目前的主流解决方案
  2. c# Environment.GetCommandLineArgs
  3. 大白菜超级U盘启动盘制作工具V1.7(最新版)
  4. R语言学习笔记(一)
  5. 关于非诚勿扰百度专场
  6. [4G/5G/6G专题基础-157]: 无线数据承载DRB与无线信令承载SRB
  7. 坎德拉、流明、勒克斯之间的关系
  8. 阿里网盘官网网页,怎么隐藏的这么深
  9. Selenium面试问题及答案30题版
  10. pytorch函数详解 附带测试demo