逻辑控制(Java语言)

前言

所有的代码都是用逻辑结构进行控制的,逻辑控制包括:顺序结构,分支结构,循环结构。我们在C语言已经系统学习过了,这次的Java我们会从Java的角度进行了解。

顺序结构

顺序结构是最简单的逻辑结构,是每个代码中都会有的,举个例子:

public static void main(String[] args) {
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);
    }

打印结果为:1,2,3,4,如果将前后位置进行交换,那么结果也会发生相应的交换,比如:

public static void main(String[] args) {
        System.out.println(1);
        System.out.println(3);
        System.out.println(2);
        System.out.println(4);
    }

那么打印结果为:1,3,2,4,顺序结果也就是按照代码的顺序进行编译运行,当然我们也可以通过分支,循环来改变结果运行的顺序。

分支结构(选择语句)

if()语句

if()语句表达式中包含三种情况——单分支,双分支,多分支。

单分支

形式:

if(布尔类型表达式){
条件满足执行代码;
}

双分支

形式:

if(布尔类型表达式1){
条件满足执行代码1;
}else{
条件代码执行代码2;
}

多分支

if(布尔类型表达式1){
条件满足执行代码1;
}else if(布尔类型表达式2){
条件满足执行代码2;
}else{
条件满足执行代码3;
}

注意事项1——悬垂else

我们来看一个例子:

public static void main(String[] args) {
        int x=10;
        int y=10;
        if(x==10)
            if(y==10)
                System.out.println("aaa");
        else
            System.out.println("bbb");
    }

从代码的结构上来看,我们可以看到,else是跟第一个if(x==10)对齐的,但是真正意义上else是if(y==10)的else,我们需要知道else并不是跟if对齐就是这个if的else,真正意义上是与谁靠的近,就是谁的。那么我们如何避免此类问题呢?这就需要我们养成无论何时,任何一行代码,需要加上括号就需要写上,不要为了方便而省略,往往带来的不是方便,而是bug,我们加上括号不仅能增加阅读性,对于后期的维护更是方便。
所以正确的代码应该是这样的:

    public static void main(String[] args) {
       int x=10;
       int y=10;
       if(x==10) {
           if (y == 10)
               System.out.println("aaa");
       }
       else
           System.out.println("bbb");
    }

注意事项2——代码风格

// 风格1
int x = 10;
if (x == 10) {
    // 满足条件
} else {
    // 不满足条件
}
// 风格2
int x = 10;
if (x == 10)
{
    // 满足条件
}
else
{
    // 不满足条件
}

C语言中我们一般使用风格2的格式来编写代码。虽然两种方式都是合法的, 但是 Java 中更推荐使用风格1, { 放在 if / else 同一行。

注意事项3——分号问题

int x = 20;
if (x == 10); {
    System.out.println("hehe");
}

这段代码中我们在if()后加上了;导致if()语句只是一个语句,所以不管发生什么if()后面都会执行。所以这段代码打印结果为“hehe”。这也是我们采用风格1写这类代码的好处,这样写就能够避免在if()语句后面加上“;”,而是加上“{”。

switch()语句

举个例子:

    public static void main(String[] args) {
        int a=10;
        switch (a){
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            default:
                System.out.println("参数不匹配");
                break;
        }
    }

关于switch语句在C语言中注重讲过,但是有几点需要注意:

注意事项1——break 不要遗漏, 否则会失去 “多分支选择” 的效果

举个例子:

public static void main(String[] args) {
        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");
                // break;
            case 2:
                System.out.println("星期二");
                break;
        }
    }

我们将case1中的break省略,因此case1打印完星期一后,并没有跳出,而是继续往下,进入case2部分,因此仍要打印星期二。
在这里插入图片描述
因此,我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果。

注意事项2——switch 中的值只能是 整数|枚举|字符|字符串

这一点也跟C语言非常的不一样,C语言中我们知道switch(),括号中只能使用整型,但是switch不一样,switch只能用整型(long不行),枚举,字符,字符串。也就是说常见的八大基本类型中,long,double,boolean,float都不行。

注意事项3——switch 不能表达复杂的条件

什么叫复杂的条件?举个例子:

public static void main(String[] args) {
        int num = 15;
        switch (num > 10 && num < 20){
            case true:
                System.out.println("hehe");
            case false:
                System.out.println("haha");
            default:
                System.out.println("heihei");
        }
    }

在这里插入图片描述
在这里插入图片描述
我们发现会报错,原因就在于switch()的括号中表达式过于复杂。因此我们在我们能不是用switch语句就尽量不使用。

循环结构

while循环

基本语法形式:

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

我们来看一个简单的计算1到10的和的例子:

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

注意事项

  1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }。
  2. 和 if 类似, while 后面的 { 建议和 while 写在同一行。
  3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行。

break

break的功能是让循环提前结束。举个例子:
打印1到10的第一个被3整除的数:

public static void main(String[] args) {
        int i = 1;
        while (i <= 10) {
            if (i % 3 == 0) {
                System.out.println(i);
                break;
            }
            i++;
        }
    }

我们可以看到当i=3时,此时满足了i % 3 == 0这个条件,那么,打印i的值,break跳出循环,结束程序,如果没有break,那么会继续i++,知道i>10while循环才会停止。

continue

continue的功能是跳过这次循环,立即进入下一次循环。举个例子:
打印1到10被3整除的数:

public static void main(String[] args) {
        int i = 1;
        while (i <= 10) {
            if (i % 3 != 0) {
                i++;
                continue;
            }
            System.out.println(i);
            i++;
        }
    }

当i对3取余不为0时,先i++,在跳过此次循环,(如果先continue,再i++,那么在continue后,i++并不会执行,直接跳过此次循环),如果i对3取余等于0并不会进入if()条件中,而是打印i的值,在i++。

for()循环

基本语法形式:

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

我们来看一个简单求1到100的for循环:

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

注意事项:

  1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }。
  2. 和 if 类似, for 后面的 { 建议和 while 写在同一行。
  3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行。

do while()循环

基本语法形式:

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

我们来看一个简单的计算1到10的和的例子:

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

注意事项:

  1. do while 循环最后的分号不要忘记。
  2. 一般 do while 很少用到, 更推荐使用 for 和 while。

关于逻辑控制的部分Java语言所设计的就是这么多了,大部分我们在C语言中已经接触过了,如果有什么建议或者问题欢迎大家私信或者留言,谢谢各位。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Solitudefire

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

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

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

打赏作者

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

抵扣说明:

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

余额充值