目录
1,顺序结构(最基本的结构)
2,选择结构:
1):if单选择结构:
2):if双选择结构
3):if多选择结构
4)嵌套的if结构
3,回圈结构
1)while回圈
2)dowhile回圈
3)for回圈
4,break&continue
1)break关键字
2)continue关键字
下面我们来学习一下java中的流程控制陈述句,此内容作为算法方面的基础,务必认真学习,也希望各位大佬多多支持,进入自己理想的公司!!
java中的流程控制陈述句陈述句分为这些:
1,顺序结构(最基本的结构)
顺序结构举例:
2,选择结构:
1):if单选择结构:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入内容");
String s=scanner.nextLine();
//equals:判断字符串是否相等
if (s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
在键盘上输入Hello运行结果为:
而输出其他的内容,直接输出End,
2):if双选择结构
为什么要有双选择结构?
基本语法:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
public static void main(String[] args) {
//考试分数大于60就是及格,小雨60分就不及格,
Scanner scanner=new Scanner(System.in);
System.out.println("请输入成绩:");
int score =scanner.nextInt();
if(score>60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
scanner.close();
}
}
如图分析,及格的话流程走陈述句1,不及格的话走陈述句2
3):if多选择结构
基本语法:
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
注意事项:
多选择结构需要注意下面几点:
(1)if 陈述句后面最多有 1 个 else ,else 陈述句在所有的 else if 陈述句之后,
(2)if 陈述句后面可以有很多个 else if,但它们必须在 else 陈述句之前,
(3)一旦其中一个 else if 陈述句检测为 true,其他的 else if 以及 else 陈述句都将跳过执行,
代码演示:
public static void main(String[] args) {
//考试分数大于60就是及格,小于60就是不及格
Scanner scanner=new Scanner(System.in);
System.out.println("请输入成绩:");
int score =scanner.nextInt();
if(score==100){
System.out.println("恭喜获得满分");
}else if(score<100&&score>=90){
System.out.println("A级");
}else if(score<90&&score>=80){
System.out.println("B级");
}else if(score<80&&score>=70){
System.out.println("C级");
}else if(score<70&&score>=60){
System.out.println("D级");
}else if(score<60&&score>=0){
System.out.println("不及格");
}else if(score>100){
System.out.println("成绩不合法");
}
}
}
优点:利用if多选择结构,可以包含更多的情况,让代码更加严谨,
下面我们来实际感受一下if多选择结构!
事实证明,我们的代码可以做到我们想做的到的需求,
4)嵌套的if结构
嵌套就是套娃,if陈述句里再套一个if陈述句呗!
基本语法:
if(布尔表达式 1){
如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
如果布尔表达式 2的值为true执行代码
}
}
那么嵌套的if结构又有什么好处呢?
有时候我们在解决某些问题的时候,需要缩小查找范围,需要有层级条件判断,提高效率
比如:我们需要寻找一个数,在1-100 之间,我们不知道这个数是多少的情况下,我们最笨的方式就是一个个去对比,看他到底是多少,这会花掉你大量的时间,如果可以利用if 嵌套比较,我们可以节省大量的成本,利用if嵌套可以不断的缩小你所要查找的数的范围!
如果你有这个思想,你已经很优秀了,因为很多大量的工程师就在寻找能够快速提高,查找和搜索效率的方式,为此提出了一系列的概念,我们生活在大资料时代,我们需要不断的去思考如何提高效率,或许哪一天,你们想出一个算法,能够将分析资料效率提高,或许你就可以在历史的长河中留下一些痕迹了,
而且,所有的流程控制陈述句都可以互相嵌套,互不影响!这就爽歪歪了!
5)Switch多选择结构
介绍:
多选择结构还有一个实作方式就是switch case陈述句,
switch case陈述句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支,
switch(expression){
case value : //陈述句 break; //可选
case value : //陈述句 break; //可选
//你可以有任意数量的case陈述句
default : //可选 //陈述句 }
后面注释可选的都可以不要!
switch 陈述句中的变量型别可以是:
<1>byte,short,int或者char,
<2>从java SE7开始
<3>switch支持字符串String型别了
<4>同时case 标签(就是后面跟的东西)必须为字符串常量或字面量,
代码演示:
public static void main(String[] args) {
//case穿透
char grade ='C';
switch (grade){
case'A':
System.out.println("优秀");
break;
case'B':
System.out.println("良好");
case'C':
System.out.println("及格");
case'D':
System.out.println("再接再厉");
case'E':
System.out.println("挂科");
}
}
我们之前说过,break可以不写,那下面我们看看不写break会输出什么呢?
如果不写break会发生case穿透!
因为switch陈述句是匹配一个具体的值(跟if陈述句比起来的优点)但是如果不加break,switch陈述句就会把所匹配的case的后面的陈述句全部输出,造成case穿透,但是这是不应该的,因此,要在每一个case陈述句后面加一个break!(if只是一个区间,而switch是一个具体的值)
所有case陈述句后都加上break之后:
public static void main(String[] args) {
char grade ='C';
switch (grade){
case'A':
System.out.println("优秀");
break;
case'B':
System.out.println("良好");
break;
case'C':
System.out.println("及格");
break;
case'D':
System.out.println("再接再厉");
break;
case'E':
System.out.println("挂科");
break;
}
}
}
输出结果为:
因此添加break是非常重要的!
在介绍一下:
从java SE7开始
switch支持字符串String型别了
下面用代码演示一下:
public static void main(String[] args) {
String name ="躺平哥";
//JDK的新特性,表达式结果可以是字符串!!!
//字符的本质还是数字
//反编译 java--class(字节码档案)--反编译(IDEA)
switch (name){
case"小佬":
System.out.println("小佬");
break;
case"躺平哥":
System.out.println("躺平哥");
break;
default:
System.out.println("弄啥嘞!");
}
}
输出为:躺平哥
3,回圈结构
为什么要使用回圈结构?
在上面的选择结构中我们始终没办法让程序一直跑着,我们运行一遍就停止了,他可以用scanner等待阻止,但他还是会停止,这在真实的环境中肯定是不行的!比如说淘宝阿里都是24小时运行,我们需要规定一个程序运行多少次,运行多久,因此我们需要一种结构来搞定这种事情,于是乎,回圈结构就诞生了!顺序结构只能执行一次,如果你想让相同的结构执行多次的话那么就应该使用回圈结构!!!
1)while回圈
基本语法:
while( 布尔表达式 ) {
//回圈内容
}
只要布尔表达式为 true,回圈就会一直执行下去,
在回圈刚开始时,会计算一次 “ 布尔表达式 ” 的值,若条件为真,执行回圈体,而对于后来每一次额外的回圈,都会在开始前重新计算一次判断是否为真,直到条件不成立,则回圈结束,
我们大多数情况是会让回圈停止下来的,我们需要一个让表达式失效的方式来结束回圈,
代码演示
public static void main(String[] args) {
int i = 0;
//i小于100就会一直回圈
while (i<100){
i++; System.out.println(i);
}
}
少部分情况需要回圈一直执行,比如服务器的请求回应监听等(死回圈,平时应该避免,防止程序崩溃!)
public static void main(String[] args) {
while (true){
//等待客户端连接
//定时检查
//......
}
}
案例:计算1+2+3+…+100=?
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i <= 100) {
sum = sum+i; i++;
}
System.out.println("Sum= " + sum);
}
等于5050
2)dowhile回圈
对于 while 陈述句而言,如果不满足条件,则不能进入回圈,但有时候我们需要即使不满足条件,也至少执行一次,
do…while 回圈和 while 回圈相似,不同的是,do…while 回圈至少会执行一次,
do {
//代码陈述句
}while(布尔表达式);
下面我们用 do...while 改造一下上面的案例!
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum+i;
i++; }while (i <= 100);
System.out.println("Sum= " + sum);
}
执行结果当然是一样的!
While 和 do-While 的区别:
while先判断后执行,dowhile是先执行后判断!
Do...while总是保证回圈体会被至少执行一次!这是他们的主要差别!!!
3)for回圈
虽然所有回圈结构都可以用 while 或者 do...while 表示,但 Java 提供了另一种陈述句 —— for 回圈,使一些回圈结构变得更加简单,
for 回圈陈述句是支持迭代的一种通用结构,是最有效、最灵活的回圈结构,
for回圈的基本语法:
for(1,初始化,2,布尔表达式;3,更新) {
//4,代码陈述句
}
执行顺序为1,2,4,3(注意上方编号)
如果布尔表达式的值为ture,那么将执行4,代码陈述句然后再进行迭代(加一或者减一)
如果布尔表达式为false那么将不再执行4代码陈述句!!
【演示: while 和 for 输出】
public static void main(String[] args) {
int a = 1; //初始化
while(a<=100){
//条件判断
System.out.println(a);
//回圈体 a+=2;
//迭代 }
System.out.println("while回圈结束!");
for(int i = 1;i<=100;i++){
//初始化//条件判断 //迭代
System.out.println(i);//回圈体
}
System.out.println("while回圈结束!");
}
我们发现, for 回圈在知道回圈次数的情况下,简化了代码,提高了可读性,我们平时用到的最多的也是我们的for 回圈!
【练习 1 :计算 0 到 100 之间的奇数和偶数的和】
public class java1 {
public static void main(String[] args) {
int i = 0;
int j = 0;
for (int i1 = 100; i1 > 0; i1--) {
if (i1%2==0){
i += i1;
}else{
j += i1;
}
}
System.out.println("基数和"+j);
System.out.println("偶数和"+i);
【练习 2 :用 while 或 for 回圈输出 1-1000 之间能被 5 整除的数,并且每行输出 3 个】
public static void main(String[] args) {
for(int j = 1;j<=1000;j++){
if(j%5==0){
System.out.print(j+"\t");
}
if(j%(5*3)==0){
System.out.println();
}
}
}
【练习 3 :打印九九乘法表】
public class java1 {
public static void main(String[] args) {
for (int i = 1 ; i < 10 ;i++) {
for (int i1 = 1; i1 < i+1; i1++) {
System.out.print(i+"*"+i1+"="+i*i1+"\t");
}
System.out.println();
}
4,break&continue
1)break关键字
作用:
break 主要用在回圈陈述句或者 switch 陈述句中,用来跳出整个陈述句块,
break 跳出最里层的回圈,并且继续执行该回圈下面的陈述句,
【演示:跳出回圈】
public class java1 {
public static void main(String[] args) {
for (int i1 = 100; i1 > 0; i1--) {
if (i1==80){
break;
}else{
System.out.println(i1);
}
}
输出结果为 86 85 84 83 82 81!!
2)continue关键字
continue 适用于任何回圈控制结构中,作用是让程序立刻跳转到下一次回圈,从头开始继续回圈!
在 for 回圈中, continue 陈述句使程序立即跳转到更新陈述句,也就是说更新完继续在从头开始回圈!
在 while 或者 do…while 回圈中,程序立即跳转到布尔表达式的判断陈述句,也就是说从新开始while回圈!
public class java1 {
public static void main(String[] args) {
for (int i1 = 0; i1 < 10; i1++) {
if (i1==5){
continue;
}else{
System.out.println(i1);
}
}
输出结果为 0 1 2 3 4 5 6 7 8 9
两者区别
break 在任何回圈陈述句的主体部分,均可用 break 控制回圈的流程, break 用于强行退出回圈,不执行回圈中剩余的陈述句,(break 陈述句也在 switch 陈述句中使用 )
continue 陈述句用在回圈陈述句体中,用于终止某次回圈程序,即跳过回圈体中尚未执行的陈述句,接着进行下一次是否执行回圈的判定,
也就是说break直接说老娘不干了,直接从该回圈体跳走!而continue是跳出这一次回圈执行下一次回圈,可最侄训是在回圈体的内部,没有跳出回圈体!这就告诉我们要敢于跳出条条框框的限制才能突破自己!!break!!!!
代码都是自己敲得,大佬们支持一下幺幺哒---
鸣谢【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili
0 评论