day 04-控制结构学习
Posted Yuri_D
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day 04-控制结构学习相关的知识,希望对你有一定的参考价值。
第4章 程序控制结构
目录
- 顺序
- 分支(if else swith)
- 循环(for, while, do while, 多重循环*)
- break
- contine
- return
介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
- 顺序控制
- 分支控制
- 循环控制
顺序控制结构
-
介绍:程序从上到下逐行地执行,中间没有任何判断和跳转。
-
举例和注意事项
Java中定义成员变量时采用合法的前向引用。如:
public class Test int num1 = 12; int num2 = num1 + 2; //错误形式如下: public class Test int num2 = num1 + 2; int num1 = 12;
-
图示:中间没有判断,直接顺序走即可
分支控制结构
-
介绍:让程序有选择的进行执行,分支控制有三种
-
分类:1.单分支 2.双分支 3.多分支
单分支
-
基本语法
if(条件表达式) 执行代码块;(可以有多条语句.)
-
说明:当条件表达式为ture时,就会执行中的代码。如果为false就不执行。
特别说明:如果中只有一条语句,则可以不用,但是建议写上
-
案例说明If01.java
//编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出"你年龄大于18,要对自己的行为负责,送入监狱” package chapter05; import java.util.Scanner;//IDEA中自动导入了包 public class If01 public static void main(String[] args) //编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出"你年龄大于18,要对自己的行为负责,送入监狱 //思路分析:1.定义一个Scanner对象,接收输入的年龄 //2.把年龄保存到一个变量 int age //3.使用if判断,输出对应的信息 Scanner scanner = new Scanner(System.in); System.out.println("请输入年龄"); int age = scanner.nextInt(); if (age > 18) System.out.println("你年龄大于18,要对自己的行为负责,送入监狱"); System.out.println("程序继续……"); scanner.close();//记住关闭接收终端
-
单分支流程图
、
双分支
-
基本语法
if(条件表达式) 执行代码块1; else 执行代码块2;
-
说明:当条件表达式成立,即执行代码块1,否则执行代码块2。如果执行代码块只有一条语句,则可以省略,否则,不能省略。
-
案例演示lf02.java
//编写一个程序,可以输入人的年龄如果该同志的年龄大于18岁则输出"你年龄大于18,要对自己的行为负责,送入监狱。"否则,输出"你的年龄不大这次放过你了。" package chapter05; import java.util.Scanner; public class If02 public static void main(String[] args) Scanner scanner = new Scanner(System.in); System.out.println("请输入年龄:");//新建键盘接收 int age = scanner.nextInt();//保存年龄int变量 if (age > 18) //进行if判断 System.out.println("你年龄大于18,要对自己的行为负责,送入监狱。"); else //双分支 System.out.println("你的年龄不大这次放过你了。"); System.out.println("程序继续……"); scanner.close();
-
双分支流程图
练习题1-单双
-
嵌套
答案:韩顺平教育~
-
练习
//lfExercise01.java //2.编写程序,声明2个double型变量并赋值。判断第1个数大于10.0,且第2个数小于20.0,打印两数之和 //3.[课后自己练]定义两个变量int,判断两者的和,是否能被3又能被5整除,打印提示信息 //4.判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被4整除,但不能被100整除;(2)能被400整除 int a = 12; int b = 34; if ((a+b) % 3 == 0 && (a + b) % 5 == 0) System.out.println("和能被3和5整除"); int years = 1; if((years % 4 ==0 && years % 100 != 0) || years % 400 == 0) System.out.println("闰年");
多分支
-
基本语法
if(条件表达式1) 执行代码块1; else if(条件表达式2) 执行代码块2; ...... else 执行代码块n; //特别说明:(1)多分支 可以没有else,如果所以的条件表达式都不成立,则一个执行入口都没有 (2)如果有else,如果所有的条件表达式都不成立,则默认执行else代码块
-
说明
1.当条件表达式1成立时,即执行代码块1;
2.如果表达式1不成立,才去判断表达式2是否成立;
3.如果表达式2成立,就执行代码块2;
4.以此类推,如果所有的表达式都不成立;
5.则执行else的代码块,注意,只能有一个执行入口。 -
图示
练习题2-多
案例1
//案例lf03.java
/*
输入保国同志的芝麻信用分:
如果:
1.信用分为100分时,输出信用极好;
2.信用分为(30, 99]时,输出信用优秀;
3.信用分为[60,80]时,输出信用一般;
4.其它情况,输出信用不及格
5.请从键盘输入保国的芝麻信用分,并加以判断
*/
package chapter05;
import java.util.Scanner;
public class If03
public static void main(String[] args)
Scanner scanner = new Scanner(System.in);//接收数据
System.out.println("请输入保国同志的芝麻信用分:");
int grade = scanner.nextInt();//保存变量
if (grade >=1 && grade <= 100)
//限定范围-->此处还可以进行使用异常处理机制对输入的数据不是整数,而是hello进行处理!!!
if (grade == 100) //多分支判断
System.out.println("信用极好");
else if (grade > 80 && grade <= 99)
System.out.println("信用优秀");
else if (grade >= 60 && grade <= 80)
System.out.println("信用一般");
else
System.out.println("信用不及格");
else
System.out.println("输入数据不合法,请重新输入!");
scanner.close();//接收关闭
案例2
//代码,看看输出什么?
boolean b = true;
if(b = false) // 如果写成if(b= false)能编译通过吗?如果能,结果是?-->因为if判断的括号里是false,判断结果就是错,括号里是true,结果就是对(此处为赋值)
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
嵌套分支
-
基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。建议:不要超过3层(可读性不好) -
基本语法
if() if() //if-else... else //if-else...
-
案例1
//参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。可以让学员先练习下,输入成绩和性别,进行判断和输出.Nestedlf.java //提示:double score;char gender; //接收字符:char gender = scanner.next().charAt(0) package chapter05; import java.util.Scanner; public class NestedIf public static void main(String[] args) Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); double score = scanner.nextDouble(); if (score > 8.0) System.out.println("请输入性别:"); char gender = scanner.next().charAt(0);//该处是如何将字符串转成一个字符! if (gender == '男') System.out.println("恭喜您进入男子组决赛!"); else if (gender == '女') System.out.println("恭喜您进入女子组决赛!"); else System.out.println("输入类型有误,请重新输入!"); else System.out.println("很遗憾您被淘汰!"); scanner.close();
switch分支
- 基本语法
-
switch(表达式) case 常量1: //-->翻译就是当... 语句块1; break; case 常量2: 语句块2: break; ... case 常量n: 语句块n; break; default: default语句块; break;
- switch说明
-
switch关键字,表示swtich分支
-
有一个表达式就对应一个具体的返回值
-
case 常量1:当表达式的值等于常量1,就执行语句块1
-
break:表示退出swtich
-
如果和 case 常量1匹配,就执行语句块1,如果没有匹配,就继续匹配 case 常量2
-
如果一个都没有匹配上,执行default
- 示意图
-
如果没有break会存在case穿透,执行完所有语句块!
- 快速入门
-
案例Switch01.java
//1.请编写个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g //2.a表示星期一,b表示星期二 //3.根据用户的输入显示相应的信息要求使用switch语句完成 package chapter05; import java.util.Scanner; public class Switch01 public static void main(String[] args) Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符(a,b,c,d,e,f,g)"); char input = scanner.next().charAt(0); //在Java中只要有值返回,就是一个表达式 switch (input) case 'a' : System.out.println("今天是星期一"); break; case 'b' : System.out.println("今天是星期二"); break; case 'c' : System.out.println("今天是星期三"); break; default: System.out.println("输入有误,没有匹配"); System.out.println("退出switch,继续执行程序");
- 细节讨论
-
表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
char C = 'a'; switch(c) case 'a'://正确 System.out.println("ok1"); break; case "hello"://错误 System.out.println("ok2"); break; case 20://正确,可以进行转换 System.out.println("ok2"); break; default: System.out.println("ok3");
-
switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String)
double d = 1.1; switch(d)//错误,不能使用浮点数,会造成精度下降 case 1.1://错误 System.out.println("ok2"); break;
-
case子句中的值必须是常量或者常量表达式(1,‘a’),而不能是变量
char d = 'a'; switch(d) case 'a'://正确,只能是常量或者常量表达式 System.out.println("ok2"); break; case d://错误,不能是变量 System.out.println("ok3"); break;
-
default子句是可选的,当没有匹配的case时,默认执行default
-
break语用来在执行完一个case分支后使程序跳出switch语句块,如果没有写break,程序会顺序执行到switch结尾,除非遇到break
练习题3-s
SwitchExercise.java
- 使用switch把小写类型的char型转为大写(键盘输入)。只转换a,b, c, d, e。其它的输出"other"。
- 对学生成绩大于60分的,输出"合格"。低于60分的,输出"不合格"。(注:输入的成绩不能大于100),提示成绩/60
- 根据用于指定月份,打印该月份所属的季节。3,4,5 春季;6,7,8夏季;9,10,11秋季;12,1,2冬季(提示使用穿透)
package chapter05;
import java.util.Scanner;
public class SwitchExercise
public static void main(String[] args)
//1. 使用switch把小写类型的char型转为大写(键盘输入)。只转换a,b, c, d, e。其它的输出"other"。
/*
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个小写字母:");
char c = scanner.next().charAt(0);
switch (c)
case 'a':
System.out.println('A');
break;
case 'b':
System.out.println('B');
break;
case 'c':
System.out.println('C');
break;
case 'd':
System.out.println('D');
break;
case 'e':
System.out.println('E');
break;
default:
System.out.println("other");
System.out.println("完成操作!");*/
/*2.学生成绩大于60分的,输出"合格"。低于60分的,输出"不合格"。(注:输入的成绩不能大于100),提示 成绩/60
思路分析:
0.这道题,可以使用分支来完成,但是要求使用switch这里我们需要进行一个转换,编程思路
1.如果成绩在[60,100] ,(int)(成绩/60) = 1
2.如果成绩在[0,60) , (int)(成绩/60) = 0
*/
/*
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生成绩:");
double score = scanner.nextDouble();
if (score>=0 && score<= 100)
switch ((int)(score / 60))
case 0:
System.out.println("不合格");
break;
case 1:
System.out.println("合格");
break;
else
System.out.println("输入成绩有误,请重新输入");
*/
//3. 根据用户指定月份,打印该月份所属的季节。3,4,5 春季;6,7,8夏季;9,10,11秋季;12,1,2冬季(提示使用穿透)
Scanner scanner = new Scanner(System.in);
System.out.println("请输入月份(1-12):");
int month = scanner.nextInt();
switch (month)
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("输入有误,请重新输入");
scanner.close();
switch和if的比较
- 如果判断的具体数值不多,而且符合byte、short、 int、char、 enum、String这6种类型。虽然两个语句都可以使用,建议使用swtich语句。
- 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广
循环控制结构
for循环
-
基本介绍:听其名而知其意,就是让你的代码可以循环的执行。
-
实际需求For01.java
编写个程序可以打印10句"你好,世界!"。请大家想想怎么做?
package chapter05; public class For01 public static void main(String[] args) //使用for循环控制 for(int i = 1; i <= 10; i++) System.out.println("你好,世界!" + i);
-
基本语法
for(循环变量初始化;循环条件;循环变量迭代) 循环操作(可以多条语句);
-
语法说明
1.for关键字,表示循环控制
2.for有四要素:(1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
3.循自学it18大数据笔记-第一阶段Java-day05-day06-day07-day08
笔记为自学时随手记录,如有错误,欢迎指正,不胜感激!
笔记分享:自学it18大数据笔记-第一阶段Java-day05-day06-day07-day08——会持续更新……
第一阶段Java-day03-day04见:http://t.cn/R65SR0f
day05笔记见下图:
day06笔记见下图:
day07笔记见下图:
day08笔记见下图:
以上是关于day 04-控制结构学习的主要内容,如果未能解决你的问题,请参考以下文章