Java基础学习第四节——选择结构、循环结构、分支结构 - Go语言中文社区

Java基础学习第四节——选择结构、循环结构、分支结构


1. 课程介绍

    1. 选择结构if switch(掌握)
    1. 循环结构 while do-while for(掌握)
    1. 循环控制语句(掌握)
    1. 递归函数(理解)

2 选择结构

2.1为什么学习选择结构

让程序有选择性的执行代码;

场景1:模拟qq登录

如果:用户名密码正确–》登录成功

如果:用户名密码错误–》登录失败

场景2:
在这里插入图片描述

2.2 if

语法结构:

If(x){

当x为true的时候执行我括号里面的代码,否则不执行

}

X可以是boolean值,或者是运算为boolean值类型

  1. 语法结构1:
>   If(x){

>   如果x==true那么就执行代码块中的代码,否则不执行

>   }

>   X:布尔值或者结果值为布尔的表达式

.int a = 20;

if(a<=20){

System.out.println("自动充电!");

}

if(a>20 && a<=100){

System.out.println("自动办公!");

}
  1. 语法结构2:
>   If(x){

>   若x为true则执行大括号中的代码,否则不执行

>   }else{

>   若x为false则执行括号中的代码,否则不执行

>   }

.int a = 20;

if(a<=20){

System.out.println("自动充电!");

}else{

System.out.println("自动办公!");

}
  1. 语法结构3:
>   If(条件1){
>   如果条件1满足,那么就执行括号中的代码,否则不执行
>   }else if(条件2){
>   如果条件2满足,那么就执行括号中的代码,否则不执行
>   }else if(条件3){
>   如果条件3满足,那么就执行括号中的代码,否则不执行
>   }else if(条件4){
>   如果条件4满足,那么就执行括号中的代码,否则不执行
>   }else if(条件5){
>   如果条件5满足,那么就执行括号中的代码,否则不执行
>   }else{
>   以上条件都不满足,则执行括号中的代码
>   }
>   注意:if后面的{}可以省略的,没有{}它只管一行代码(不推荐使用)

目的:我们主要来判断是,或者不是,对,或者不对

2.3 switch

  1. 语法结构
>   switch(变量){
>   case 变量可能值1:
>   功能执行语句1;
>   .............
>   break;
>   case 变量可能值2:
>   功能执行语句2;
>   .............
>   break;
>   case 变量可能值3:
>   功能执行语句3;
>   .............
>   break;
>   default:
>   功能执行语句;
>   }

变量:可以有的类型 byte short char int enum(枚举,java5开始支持的) String
java7开始支持的 目的:我们主要用来选择多个确定的值

3 循环结构

3.1 为什么学习循环结构

生活中比较常见的循环:
吃饭,睡觉,看片,撸代码
单曲循环
歌曲列表循环

程序中:

>   如:打印一句话:java是世界上最好的语言 100次

>   System.out.println(“java是世界上最好的语言”);

>   System.out.println(“java是世界上最好的语言”);

>   System.out.println(“java是世界上最好的语言”);

>   System.out.println(“java是世界上最好的语言”);

>   System.out.println(“java是世界上最好的语言”);

>   .........

不用依次去打,在java中已经给我们提供了循环结构,我们只需要把重复的语句放在结构中,只需要设置循环次数,它就会自动给我们打
Java中循环结构:for do-while while
3种循环作用都是一样的,它们之间可以互相替换的,只是语法结构不一样

3.2 while的基本循环

while语句的语法

while(x){

若x满足其条件则循环该代码快中的内容

}

x:它是一个boolean值或者结果为boolean的一个值

x:boolean值,或者结果为boolean的值

注意:while(x) x是不能直接写false,编译器报错

3.3 do-while基本循环

语法结构:

do{

循环体

}while(x);

x:它是一个boolean值或者结果为boolean的一个值

do-while执行流程:

不管x满不满足条件 循环体都会执行一次

3.4 for循环(重中之重)

语法结构:

for(①初始化值;②条件;③最后执行的代码){

④循环体

}

for循环执行的流程:

  1. ①–》②–》④—》③

  2. ②–》④–》③

  3. ②–》④–》③

  4. ②–》④–》③

  5. ②–》④–》③

  6. ②–》④–》③

  7. 。。。。。。。。。。。

3.5常见面试题

在这里插入图片描述

上面的代码打印的值?
循环了几次?
判断了几次?
最后i的值是多少?

4 双层for循环

4.1语法结构:

for(初始化值;条件;最终执行的代码){

 for(初始化值;条件;最终执行的代码){

 	  }

}

注意:for循环不宜嵌套太多for循环,最多2层即可,多了之后对性能很差

For循环的无限循环

for(;;){

}

4.2练习

在这里插入图片描述

4.3加强for循环 foreach(了解)

(1) foreach作用

作用: 主要是用来遍历数组和集合的;
缺点: 没有索引,凡是涉及有索引相关操作还是用普通for循环,

(2)语法结构

for(源中元素类型 e : 源 ){
  直接使用e就可以了
}

源 : 可以是数组或者集合(Iterable接口的实现类)

在这里插入图片描述

遍历一个数组也可以使用我们今天学的for循环

在这里插入图片描述

5.循环控制语句

5.1 break

①结束当前这一层循环

在这里插入图片描述

②验证结束当前这一层

准备嵌套语句

在这里插入图片描述

可以给循环添加标签,让break跳出指定的标签

注意:循环嵌套不宜嵌套太多太深,影响性能,一般2层
在这里插入图片描述

5.2 continue跳过一次循环

场景:比如每天干的事情:吃饭 睡觉 打代码
但是我在星期六,不想吃饭,应该怎么办,可以用continue
在这里插入图片描述

5.3 return

return 表示结束当前方法

注意 break continue return 后面不能有其它的代码,因为永远执行不到

在这里插入图片描述

在这里插入图片描述

6.递归函数(了解)

简单理解就是自己调用自己,直到满足一个条件结束自己调用自己的过程,这个就是递归。例子:电影院

(1)使用递归求出 斐波拉切数列

/**

* 什么是递归呢?就是方法自己调用自己

* StackOverflowError : 堆栈溢出

*/

public static void main(String[] args) {

//main(args);

System.out.println(f(1));

System.out.println(f(2));

System.out.println(f(3));

System.out.println(f(5));

}

/*

* 斐波拉切数列

* f(0) = 0;

* f(1) = 1;

* .....

*

* f(n) = f(n-1)+f(n-2); n>=2

* f(5) = f(4)+f(3); 5

* f(4) = f(3)+f(2); 3

* f(3) = f(2)+f(1); 2

* f(2) = f(1)+f(0); 1

*

*/

public static int f(int n){
	if(n==0){
		return 0; //50%
	}else if(n==1){
		return 1; //99.9999%
	}
	return f(n-1)+f(n-2);
	}
}

(2)使用递归函数 等差数列求和f(x) = n*(n+1)/2

在这里插入图片描述

使用递归的时候呢,一定要给它一个出口,return,就会结构本次方法,返回一个值,否则就是一个无限的嵌套递归,造成堆栈溢出

7.练习

1.请自己读下列的代码,跟踪分析变量i的值的变化过程。

public class Test{
    public static void main(String[]args){
        int i=5;
        i++;
        System.out.println("i="+i); //6
        ++i;
        System.out.println("i="+i);// 7
        int a=++i;
        System.out.println("a="+a); //a=8
        System.out.println("i="+i); //a=8
        int b=i++; b=8;
        System.out.println("b="+b);//算出来b=9 //算之前b=8!!!!!!!!!!
        System.out.println("i="+i); //i=9
    }
}

2.考试成绩分等级。

90~100 A等。

80-89 B等。

70-79 C等。

60-69 D等。

60以下E等。

请写一段程序,给定不同的成绩,输出对应的等级。

public static void main(String[] args) {
    Show(90);
}
public static void Show(int score) {
    String s = null;
    if(score<=0&&score>100) {
        System.out.println("分数不合法");
    }else if(score>=90) {
        s = "A";
    }else if(score>=80) {
        s= "B";
    }else if(score>=70) {
        s= "C";
    }else if(score>=60) {
        s= "D";
    }else {
        s= "E";
    }
    System.out.println(s);
}

3.使用for循环计算1-10的积

public static void main(String[] args) {
    int sum = 1;
    for(int i=1;i<=10;i++) {
        sum*=i;
    }
    System.out.println(sum);
}

4.计算 1! + 2! + 。。。10! 1到10的阶乘和

public static void main(String[] args) {
    int sum = 0;
    for(int i=1;i<=10;i++) {
        sum+=Number(i);
    }
    System.out.println(sum);
    }
    
    public static int Number(int n) {
        if(n==1) {
            return 1;
        }
        return n*Number(n-1);

}

5.使用嵌套循环打印下面图形
在这里插入图片描述

>   public static void main(String[] args) {
>       for(int i=1;i<10;i++) {
>           for(int j=1;j<=i;j++) {
>               System.out.print(j+" ");
>           }
>               System.out.println();
>       }
>   }
  1. 定义一个方法,接受三个int参数,返回最小的一个数。
>   public static void main(String[] args) {
>       System.out.println(Show(5, 2, 1));
>   }
>   public static int Show(int a, int b, int c) {
>       if (a < b) {
>           if (a < c) {
>               return a;
>           } else {
>                return c;
>           }
>               } else if (b < c) {
>                   return b;
>               } else {
>                   return c;
>               }
>   }
  1. 求出100以内前5个3的倍数的数字。(请使用for 并且结合break 实现)
>   public static void main(String[] args) {
>   int sum = 0;
>   for(int i=1;i<100;i++) {
>       if(i%3==0) {
>            System.out.println(i);
>            sum++;
>       }
>       if(sum==5) {
>           break;
>       }
>    }
>   }
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_38846837/article/details/84331507
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢