Java 逻辑控制详解分析

 更新时间:2021年11月05日 15:42:50   作者:Lockey-s  
在程序开发的过程之中一共会存在有三种程序逻辑:顺序结构、分支结构、循环结构,对于之前所编写的代码大部分都是顺序结构的定义,即:所有的程序将按照定义的代码顺序依次执行

顺序结构

顺序结构就是按照代码从上往下执行,我们运行的程序就是从上往下的顺序结构,当遇到方法的时候,才去执行方法。例如:

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");

在这里插入图片描述

当改变代码顺序的时候,输出的结果也不一样。例如:

System.out.println("bbb");
System.out.println("ccc");
System.out.println("aaa");

在这里插入图片描述

分支结构

if 语句

if 语句的基本语法(单判断):

if(布尔表达式){
//条件满足时执行代码
}

if 语句的基本语法(加否定):

if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}

if 语句的基本语法(多分支):

if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}

if 语句当中可以写很多 else if ,但是 if 和 else 只能有一个。

代码实例 1:判断一个数是奇数还是偶数:

int num = 10;
if (num % 2 == 0) {
    System.out.println("num 是偶数");
} else {
    System.out.println("num 是奇数");
}

在这里插入图片描述

代码实例2:判定一个数是正数还是负数。

int num = 10;
if (num > 0) {
    System.out.println("num 是正数");
} else if (num < 0) {
    System.out.println("num 是负数");
} else {
    System.out.println("num 是 0");
}

在这里插入图片描述

代码实例3:判定一年是不是闰年。

因为闰年的规律是:如果这一年是 4 的倍数,且不是 100 的倍数,那么这一年就是闰年。或者这个数能整除 400 。

Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
System.out.println(i + " 是闰年");
} else {
System.out.println(i + " 不是闰年");
}

这里是通过 Scanner 来输入一个数。

在这里插入图片描述

悬垂 else 问题

此代码输出什么?

int x = 10;
int y = 10;
if (x == 20) 
 if (y == 10)
 System.out.println("aaa");
else
 System.out.println("bbb");

在这里插入图片描述

这里什么都不输出 ,因为这里就涉及到了悬垂 else 。else 只与最近的 if 相匹配,这里最近的 if 是 y==10 所以就什么都不输出了。

所以我们平时写代码,一定要加上括号,这样既方便别人阅读代码,也方便我们自己去修改。

switch 语句

基本语法:

switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}

switch 语句是我们常见的多分支语句,可根据 switch 括号内的变量对应的值去执行相应的 case 语句。而且每个 case 语句下面都要有 break 否则会继续执行下面的 case 语句。当 switch 语句当中没有匹配的 case 语句的时候,就会执行 default 语句。switch 虽然也可以嵌套,但是嵌套之后会很乱,非常不易于阅读代码。所以尽量不要嵌套。

代码示例:

int day = 7;
switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期日");
        break;
    default:
        System.out.println("此数字不属于星期");
        break;
}

在这里插入图片描述

循环结构

while 循环

基本语法:

while(循环条件){
循环语句;
}

要注意的是:循环条件是 true 就执行循环语句,否则就结束循环。例如求 1 - 10 的和:

int n = 1;
int sum = 0;
while (n <= 10){
    sum += n;
    n++;
}
System.out.println(sum);

在这里插入图片描述

这里就是通过 while 循环来计算 1 - 10 的和。

while 循环和 if 语句一样,while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句。所以为了方便阅读和后期的维护,还是应该加上括号。就像这样:

int num = 1; 
while (num <= 10)
 System.out.println(num); 
 num++; 

在这里插入图片描述

因为只能执行一条语句,所以就一直死循环。

break

在循环结构当中,break 也是经常用到的。break 就是让循环提前结束。例如:找到 1 - 10 中第一个 3 的倍数。

int num = 1;
while (num <= 10) {
    if (num % 3 == 0) {
        System.out.println("找到了 3 的倍数 为:" + num);
        break;
    }
    num++;
}

在这里插入图片描述

执行到 break 的时候,就会让循环结束。但是要注意的是:如果是多层循环嵌套 break 结束的是最近的一层循环。

continue

continue 的功能是跳过这次循环, 进入下次循环。就是这次循环当中 continue 下面的代码不执行,进入下一次循环。例如:找到 100 - 200 中所有 3 的倍数。

int num = 100; 
while (num <= 200) { 
 if (num % 3 != 0) { 
 num++;
 continue; 
 } 
 System.out.println("找到了 3 的倍数, 为:" + num); 
 num++; 
} 

在这里插入图片描述

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句,所以不是 3 的倍数的数就没有打印出来。

for循环

语法:

for(表达式1;表达式2;表达式3){
循环体;
}

表达式1: 用于初始化循环变量.
表达式2: 循环条件
表达式3: 更新循环变量.

相对于 while 循环,for 循环会把这三个部分结合在一起,降低出现 bug 的可能。举例:求 1- 100 的和

int sum = 0; 
for (int i = 1; i <= 100; i++) { 
 sum += i; 
} 
System.out.println("sum = " + sum); 

在这里插入图片描述

do while 循环

语法:

do{
循环语句;
}while(循环条件);

do while 循环是先执行循环语句,在判断循环条件,如果循环条件为 true 就继续循环,否则就退出循环。不论如何 do while 循环 都会执行一次。循环最后的分号一定不要忘记。举例:求 1 - 100 的和。

int num = 1;
int sum = 0;
do {
    sum += num;
    num++;
} while (num <= 100);
System.out.println(sum);

在这里插入图片描述

一般 do while 很少用到, 更推荐使用 for 和 while 。

到此这篇关于Java 逻辑控制详解分析的文章就介绍到这了,更多相关Java 逻辑控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA文件读写操作详解

    JAVA文件读写操作详解

    这篇文章主要为大家详细介绍了JAVA文件读写操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 哲学家就餐问题中的JAVA多线程学习

    哲学家就餐问题中的JAVA多线程学习

    哲学家就餐问题是1965年由Dijkstra提出的一种线程同步的问题,下面我们就看一下JAVA多线程如何做
    2013-11-11
  • Java报错:java.util.concurrent.ExecutionException的解决办法

    Java报错:java.util.concurrent.ExecutionException的解决办法

    在Java并发编程中,我们经常使用java.util.concurrent包提供的工具来管理和协调多个线程的执行,va并发编程中,然而,在使用这些工具时,可能会遇到各种各样的异常,其中之一就是java.util.concurrent.ExecutionException,本文将详细分析这种异常的背景、可能的原因
    2024-09-09
  • Java操作Elasticsearch rest-high-level-client 的基本使用

    Java操作Elasticsearch rest-high-level-client 的基本使用

    这篇文章主要介绍了Java操作Elasticsearch rest-high-level-client 的基本使用,本篇主要讲解一下 rest-high-level-client 去操作 Elasticsearch的方法,结合实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • Java Redis分布式锁的正确实现方式详解

    Java Redis分布式锁的正确实现方式详解

    这篇文章主要介绍了Java Redis分布式锁的正确实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Redis打开rdb文件常用方法详解

    Redis打开rdb文件常用方法详解

    这篇文章主要介绍了Redis打开rdb文件常用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java实现的KNN算法示例

    Java实现的KNN算法示例

    这篇文章主要介绍了Java实现的KNN算法,结合实例形式分析了KNN算法的原理及Java定义与使用KNN算法流程、训练数据相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Java日志API管理最佳实践详解

    Java日志API管理最佳实践详解

    这篇文章主要介绍了Java日志API管理最佳实践详解,记录日志只是有效地利用日志的第一步,更重要的是如何对程序运行时产生的日志进行处理和分析。,需要的朋友可以参考下
    2019-06-06
  • java实现单词搜索迷宫游戏

    java实现单词搜索迷宫游戏

    这篇文章主要介绍了java实现单词搜索迷宫游戏,实例分析了迷宫游戏的实现技巧,需要的朋友可以参考下
    2015-05-05
  • 一文搞懂Java克隆及深拷贝与浅拷贝的区别

    一文搞懂Java克隆及深拷贝与浅拷贝的区别

    在编程中,通常通过实现Cloneable接口和重写clone方法来实现对象的克隆,然而,需要注意的是克隆操作可能存在深拷贝和浅拷贝的区别,在使用时需要根据实际需求选择合适的克隆方式,本文就给大家详细讲讲什么是克隆以及深拷贝与浅拷贝的区别,需要的朋友可以参考下
    2023-08-08

最新评论