JAVA基础之流程控制结构(包含打印直角三角形和三元运算符)

1.流程控制概念

Java程序通过通过控制语句来控制方法的执行流程,从而实现各种功能。这篇文章主要说一下选择结构和循环结构的控制语句。

Java中的流程控制结构主要有三种:

顺序结构:代码以“从上往下,依次执行”的方式执行。

选择结构:代码根据条件选择执行。

循环结构:一段代码重复执行。

三种结构的结合使用可以解决任何复杂问题。


2.选择结构语句

2.1 if语句

if语句指如果满足某种条件,就进行某种处理的逻辑语句。

1.if

  `if (判断条件){ 
    执行语句;
    ……
}`

在符合条件语句时。运行执行语句内容
2.if…else…

if (判断条件){
    执行语句1
    ……
}else{
    执行语句2
    ……
}

符合判断条件时,运行执行语句1内容,否则运行执行语句2内容。
3.if…else if…

 `if (判断条件1) {
    执行语句1
} else if (判断条件2) {
    执行语句2
}
...

else if (判断条件n) {
执行语句n
} else {
执行语句n+1
}`
符合判断条件1时,运行执行语句1,否则判断是否符合条件2,运行执行语句2…


2.2选择结构if语句与三元运算符的转换

三元运算符,它和if-else语句类似,语法如下:
判断条件 ? 表达式1 : 表达式2
三元运算符会得到一个结果,通常用于对某个变量进行赋值,当判断条件成立时,运算结果为表达式1的值,否则结果为表达式2的值。
例如求两个数x、y中的较大者,如果用if…else语句来实现,具体代码如下:

int x = 0;
int y = 1;
int max;
if (x > y) {
    max = x;
} else {
    max = y;
}

上面的代码运行之后,变量max的值为1。其中3-8行的代码可以使用下面的三元运算来替换。
int max = x > y ? x : y;

2.3 switch语句

switch语句是一种很常见的选择语句,它和if条件语句不通,只针对某个表达式的值做出判断,从而决定程序执行哪一段代码。
语法结构:

switch (表达式){
    case 目标值1:
        执行语句1
        break;
    case 目标值2:
        执行语句2
        break;
    ......
    case 目标值n:
        执行语句n
        break;
    default:
        执行语句n+1
        break;
}

switch语句将表达式的值和和每个case中的目标值进行对比,如果匹配到了相应的值就会执行对应的case后的语句,如果找不到任何case中匹配的值,那么就会执行default后的语句。

而在switch语句中,如果多个case条件后面的执行语句是一样的,则该执行语句只需要书写一次即可。如下:

public class SwitchDemo02 {
    public static void main(String[] args) {
        int week = 2;
        switch (week) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            // 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
            System.out.println("今天是工作日");
            break;
        case 6:
        case 7:
            // 当 week 满足值 6、7 中任意一个时,处理方式相同
            System.out.println("今天是休息日");
            break;
        }
    }
}

3.循环结构语句

3.1 while语句

while循环语句和if语句相似,都是根据条件判断是否执行大括号内的执行语句,区别在于while语句会反复判断条件,括号内的执行语句就会执行,直到条件不成立,循环才结束。

语法结构:

while(循环条件){
执行语句
………
}

语法上,大括号内的执行语句也被称为循环体,循环体是否执行取决于小括号内的循环条件。循环条件为true,循环体就会一直执行,当前循环执行结束会继续判断循环条件是否为true,知道循环条件为false,整个循环才结束。

3.2 do…while语句

do…while语句和while语句功能类似。

语法结构:

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

关键字do后面的大括号中的执行语句是循环体。do…while语句中,循环条件是在循环体后,这也就意味着,在do…while语句中,循环体会无条件的执行一次,然后根据循环条件来决定是否继续执行。

3.3 for语句

for循环语句也是我们最常用的循环语句,一般用在循环次数已知的情况下。

语法结构:

for(初始化表达式; 循环条件; 操作表达式){
    执行语句
    ………
}

通过语法结构可以看出,for关键字后条件小括号的内容分为三部分:初始化表达式,循环条件,操作表达式,中间以“;”分割,大括号内的执行语句为循环体。
具体实现以一个demo来分析一下:

public class ForDemo01 {
    public static void main(String[] args) {
        int sum = 0; // 定义变量sum,用于记住累加的和
        for (int i = 1; i <= 4; i++) { // i的值会在1~4之间变化
            sum += i; // 实现sum与i的累加
        }
        System.out.println("sum = " + sum); // 打印累加的和
    }
}
//运行结果
sum = 10

代码中,变量i的初始值为1,在判断条件i<=4为true的情况下会执行循环体sum +=i,执行完毕后,会执行操作表达式i++,i的值变为2后继续进行条件判断,直到i=5时,条件i<=4为false,结束循环,执行for循环后面的代码,打印:“sum=10”;

3.4 嵌套循环

嵌套循环是指在一个循环语句的循环体中再定义一个循环语句,while,do…while,for循环语句都可以进行相互嵌套,最常用的是for循环套用for循环。
语法结构:

for(初始化表达式; 循环条件; 操作表达式) {
    ………
    for(初始化表达式; 循环条件; 操作表达式) {
        执行语句
        ………
    }
    ………
}

语法结构比较直观,借由此去做一个使用“*”打印直角三角形的demo。

public class forDemo{
    public static void main(String[] arg) {
        int i,j;//定义两个循环变量
        for(i = 1; i <= 9; i++){//外层循环
            for(j = 1; j <= i; j++){//内层循环
                System.out.print("*");//打印输出
            }
            System.out.print("\n");//换行
        }
    }
}

运行结果:
demo运行结果

demo解析:
在代码中定义了两层for循环,外层循环控制打印次数,内层循环用于打印“”,每一行的“*”的个数都是逐行增加,最后输出一个直角三角形。具体循环过程如下:
1.定义两个循环遍历,i和j,其中i为外层循环变量,j为内层循环变量。
2.在外层循环中,i的初始化为1,条件i<=9为true,首次进入外层循环的循环体。
3.在内层循环中,j的初始化为1,由于此时i的值为1,条件j<=i为true,首次进入内层循环的循环体。
4.在内层循环中执行操作表达式j++,将j的值自增为2,循环执行判断条件,j<=i结果为false,内层循环结束,跳出循环打印换行符。
5.在外层循环中执行操作表达式i++,将i的值自增为2,循环执行判断条件,i<=9为true,进入循环体执行内层循环。
6.由于i的值为2,内层循环会执行两次,即在第二行中,会打印两个“*”,内层循环结束时会打印换行符。
7.以此类推,第三行会打印三个“*”,逐行递增,知道i=10,外层循环判断i<=9的结果为false,外层循环结束,整个程序也就结束。

4.跳转语句

跳转语句是用于实现循环执行过程中程序的流程的跳转。

4.1 break语句

在switch条件语句中和循环语句中都可以使用break语句。在switch中,break用来终止某个case并跳出switch;在循环语句中用作跳出循环,执行循环外的代码。再来一个demo。

public class BreakDemo {
    public static void main(String[] args) {
        int x = 1; // 定义变量x,初始值为1
        while (x <= 4) { // 循环条件
            System.out.println("x = " + x); // 条件成立,打印x的值
            if (x == 3) {
                break;
            }
            x++; // x进行自增
        }
    }
}

运行结果
这里写图片描述
demo中。通过while循环打印x的值,当x的值为3时使用break语句跳出循环,因此打印结果没有“x=4”。

4.2 标记

当break语句出现嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳出外层循环则需要对外层添加标记,将3.4中的demo修改一下,控制程序打印四行“*”。

public class BreakDemo02 {
    public static void main(String[] args) {
        int i, j; // 定义两个循环变量
        itcast: for (i = 1; i <= 9; i++) { // 外层循环
            for (j = 1; j <= i; j++) { // 内层循环
                if (i > 4) { // 判断i的值是否大于4
                    break itcast; // 跳出外层循环
                }
                System.out.print("*"); // 打印*
            }
            System.out.print("\n"); // 换行
        }
    }
}

运行结果:
这里写图片描述

在外层循环增加了标记“itcast”,当i>4时,使用break itcast语句跳出外层循环,打印四行“*”。

4.3 continue语句

continue语句在循环语句中的作用是终止本次循环,执行下一次循环。
demo是1-100之内奇数求和

public class ContinueDemo {
    public static void main(String[] args) {
        int sum = 0; // 定义变量sum,用于记住和
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) { // i是一个偶数,不累加
                continue; // 结束本次循环
            }
            sum += i; // 实现sum和i的累加
        }
        System.out.println("sum = " + sum);
    }
}
运行结果:sum=2500

代码中使用for循环让变量i在1-100之间循环,在循环过程中,i为偶数时,执行continue语句结束循环进入下一次循环,当i为奇数时,sum和i累加,最终得到1-100奇数之和。
嵌套循环语句中,continue语句也可以通过标记方式结束本次外层循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值