Java程序控制流(循环、选择)(含思维导图)——Java面试知识点

引言

学过一点编程的童鞋都知道,在计算机编程的过程中,最最核心的部分就是运算符变量定义数据类型以及程序控制流程了,我们都知道一个没有bug的程序是在有一定的规则下紧紧有条的运行的,而我们就是制定这些“规则”的人,如何才能写出好的“规则”呢,请往下翻⬇️

顺序执行

在没有人给计算机程序制定运行规律的时候,计算机是有它自己的想法的,它有一套类似人类阅读本能的代码执行顺序。(可能这是计算机被称为电脑的原因之一)就是以单行:从左往右;多行:从上至下;这样的规律来执行。

选择

当计算机处理复杂程序的时候,需要以条件来选择所需要执行的命令,越是复杂的程序就需要越是多的选择来完成,所以在计算机编程中也有根据条件选择的语句。主要分三大类

单分支

在有时候只有一种情况的选择中,我们只需要用到简单的单分支if语句就像这样

 int num;
 num=3;
 if (num %2 == 1)
 System.out.print("这是一个奇数");

注意:无论是for/while循环语句(后面会讲)还是if语句,判断条件后只执行下一句代码,可以通过在语句块后面加{}来完成多个语句实现例如:

int num;
 num=3;
 if (num %2 == 1) {
 System.out.print("这是一个奇数\n");
 System.out.print("而且长得真帅");
 }

双分支

有时候我们也会遇到同时要对一个条件选择两条出路,比如说上面那个例子,肯定看起来就很笨,我们用双分支结构把它完善一下好了,就像这样

int num;
 num=3;
 if (num %2 == 1) {
 System.out.print("这是一个奇数\n");
 System.out.print("而且长得真帅");
 }
 else {
  System.out.print("这是一个偶数\n");
 System.out.print("而且长得丑");
 }

else有另外的意思,也就是说我们可以把上述语句理解为:如果num对2取余等于1的其他所有情况都执行else语句块里的命令。

多分支

但是实际情况是解题过程中我们会有更多的情况产生,这时候我们就更多更多的else了。例如:

int num;
 num=3;
 if (num %2 == 1) {
 System.out.print("这是一个奇数\n");
 System.out.print("而且长得真帅");
 }
 else if(num %2 ==0){
 System.out.print("这是一个偶数\n");
 }
 else if(num %2 ==0 && num =4){
  System.out.print("这是一个偶数\n");
 System.out.print("而且长得丑");
 }

这样就有了三种情况,计算机会自动选择满足的条件选择相应代码块内的命令进行执行,如法炮制就可以将计算机应用成为真正意义上的自动化机器了!

Switch语句块

Switch语句块其实是多分支选择程序控制流程的一种,但是因为其触发条件特殊,所以单独拿出来说会好得多,还是像往常一样,我们先来看一个例子:

//作业6:请在控制台上输入两个数,并且输入一个符号(+-*/%),使用switch语句
import java.util.Scanner;
import  java.lang.String;
public class RAM {
    public static void main(String[] args) {
        Scanner scan1=new Scanner(System.in);
        System.out.print("请输入第一个数a:");
        int a=scan1.nextInt();
        
        Scanner scan2=new Scanner(System.in);
        System.out.print("请输入第二个数b:");
        int b=scan2.nextInt();
        
        Scanner choice=new Scanner(System.in);
        System.out.print("请选择计算方法1)加法 2)减法 3)乘法 4)整除:");
        switch(choice){
            case 1:
                System.out.print("a+b="+(a+b));
                break;
            case 2:
                System.out.print("a-b="+(a-b));
                break;
            case 3:
                System.out.print("a*b="+(a*b));
                break;
            case 4:
                System.out.print("a/b="+(a/b));
                break;
            default:
            	System.out.print("输入错误,请重启程序");
            	break;
        }
    }
}

在这个长例子中,我们设置了一个变量choice用来捕捉用户输入的值,然后给定了4个常量1、2、3、4用来代表四个命令块的选择,如果输入的不是1、2、3、4中的任意一个,程序就会执行default(默认)常量中的代码块。

循环

终于讲到重点了,我们都知道计算机是被创造用来快速解决人类重复计算问题的好帮手
这还得从世界上第一台计算机在美国宾夕法尼亚大学被冯诺伊曼教授所创造·······
而循环就是在计算机程序中,完成关键大量计算的程序控制流程,接下来我们来好好讲讲。

for循环

不说了,先整段代码,无码不话

for(int i=1;i<=6;i++){
            for(int j=1;j<=i;j++){
                System.out.print("*");
            }
            System.out.println("");
        }

这段代码能输出一个👇这样的图形
在这里插入图片描述
抛开逻辑层面的不说,我们先来看for循环语句的格式:
for(变量的值,若未定义可在此定义;循环条件,当条件为真时循环执行;每次循环结束后执行一次的语句)

由于for循环的高效率性和简便性,在计算机编程中,常常是以for循环作为循环的标准语句
在循环中嵌套更多的选择和循环语句,来使得你的程序更加智能和完善

while循环

while本身就有 当···时 的意思,所以while循环是计算机程序中最古老的循环语句,它跟for循环能实现的功能是完全一样的,不过相较于for循环,while循环有一些缺点:

  1. 不简便
  2. 不简便
  3. 不简便

while你别再联系我了,我怕for误会。

总之就是一个如此老旧的语句,不过也让我们看看需要用到的时候,(特别是考察知识点的时候!)怎么写:

while (当括弧内条件为真时循环下一条语句) {}
再来看一段代码:

int i=1;
int j=1;
while(i<=6;){
            while(j<=i;){
                System.out.print("*");
                j=j+1;
            }
            System.out.println("");
            i=i+1;
        }

这是for循环中的例子的while循环版本,可以相比较一下,仅仅是实现一个这么简单的功能,却让代码行多出接近100%。

do while循环

do while是一个比较少用的循环语句,它是while循环的变形版,来看个例子:

int i=0
do {
System.out.println(Java is easy);
i=i+1;
} while (i!=2)

这段代码一共会输出三次“Java is easy”,想必聪明的同学已经明白了,do while循环会先执行一次循环体之后再做条件判断,因为不管是while还是for循环都是先做条件判断再执行程序,
所以多数情况下并不会用到do while循环,主要是用作人机交互方面。

死循环

在极少数情况下(如高精度位数运算),我们会需要程序持续计算多次,我们可以把循环的判断条件设置为1或ture(永远为真)来使循环无限次的循环。例如:

for(i=1;ture;i++){}
while(ture){}

可以用类似的方法来求圆周率,以上就是本篇博客的全部内容,希望能够帮助大家,笔者在文章后放上思维导图方便大家理解知识点。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asiced

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值