Java学习笔记Day2:流程控制
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:流程控制相关推荐
- Python学习笔记3 流程控制、迭代器、生成器
第3章 流程控制.迭代器.生成器 3.1 选择语句 1.语法:(1)if -else (2)if-elif-else 2.注意:(1)每个条件后面要使用冒号:(2)使用缩进划分语句块(3)python ...
- python学习笔记3—流程控制if、for、while
流程控制if if 语句 if expression: statement(s) else else语句: if 语句,else语句 if expression: statement(s) else: ...
- Python学习笔记02_流程控制
Python 文件的创建和执行 创建和打开文件 打开cmd,输入以下命令,运行.py 文件 python xxx.py 条件判断 用代码告诉计算机,什么条件下该做什么.很多编程语言都会使用 if .e ...
- linux设置程序循环,linux shell编程学习笔记(7)流程控制之循环结构
2.1.for循环 1)遍历/列表式循环 --根据变量的不同取值,重复执行命令序列 格式: for 变量名 in 值列表 do 命令序列 done 示例:输出在线的主机IP #!/bin/bash ...
- [精易软件开发工程师Leo学习笔记]007流程控制
如果: 如果:满足条件执行一个分支,不满足则执行另外一个分支 分支线是告诉开发者成立与不成立的执行区域 下面这段代码,如果里面条件成立,所以运行第一条分支,也就是输出成立 判断和如果的区别: 判断规 ...
- Java学习笔记——流程控制
Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...
- java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- java学习笔记5--类的方法
接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...
- 尚学堂Java学习笔记
尚学堂Java学习笔记 ============================ J2SDK&JRE J2SDK:JAVA2 SOFTWARE DEVELOPMENT KIT JRE:JAVA ...
最新文章
- 计算机英语学情分析怎么写,2016年信息技术教学计划及学情分析(600字)
- 数据结构实验之图论九:最小生成树(Prim/Kruskal)
- python define graph_Python数据结构与算法之图结构(Graph)实例分析
- 域名解析跳转到另一个域名_github建立静态网站,域名解析和跳转
- Python中if __name__ == '__main__':作用
- sql server 计算两个时间 相差的 几天几时几分几秒
- 知乎:GAN 的发展对于研究通用人工智能有什么意义?
- C++动态数组简单的模拟二元堆
- Agilent RF fundamentals (4)- Impedance match and distortions
- PYQT4 Python GUI 编写与 打包.exe程序
- [BJOI2017]树的难题 点分治,线段树合并
- 跳石头 vijos1981 NOIP2015 D2T1 二分答案 模拟 贪心
- 一文带你详解你不知道的ADL原理
- Transition组件
- 反相放大电路反馈电阻上并联电容的作用 [转载]
- solidworks正版多少钱_SOLIDWORKS 2020、2021正版软件价格是多少钱?SW官方报价_专业版和白金版...
- Autodesk PowerShape Ultimate 2021中文版
- 《微信思维》摘录(一)
- 广州铁路警方2019年春运安保工作全面部署启动
- DB2异常:SQLCODE=-530