news 2026/9/6 6:46:05

【java】程序逻辑控制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【java】程序逻辑控制

顺序结构

  1. 顺序结构:程序按照代码书写的先后顺序,从上到下逐行依次执行,没有跳转、没有分支
  2. 写在前面的代码先执行,写在后面的后执行
  3. System.out.println("aaa"); System.out.println("bbb"); System.out.println("ccc"); System.out.println("aaa"); System.out.println("ccc"); System.out.println("bbb");

分⽀结构

if 语句

  1. 语法格式 1:单 if
    if(布尔表达式){ // 语句 }

    逻辑:布尔表达式为true,执行大括号内代码;为false直接跳过

    int score=92; if(score>90) { System.out.println("吃个大鸡腿"); }
  2. 语法格式 2:if‑else
    if(布尔表达式){ // 语句1 }else{ // 语句2 }

    逻辑:条件 true 执行 if 代码;false 执行 else 代码

    int score=100; if(score>90) { System.out.println("吃个大鸡腿"); } else { System.out.println("挨大嘴巴子"); }
  3. 语法格式 3:if‑else if‑else 多分支
    逻辑:从上往下判断,哪个条件成立就执行对应代码块;都不成立执行else
    int score=92; if(score>=90&&score<100) { System.out.println("优秀"); } else if(score>=80&&score<90) { System.out.println("良好"); } else if((score>=70&&score<80)) { System.out.println("中等"); } else if(score>=60&&score<70) { System.out.println("及格"); } else if(score>=50&&score<60) { System.out.println("不及格"); } else { System.out.println("错误数据"); }
  1. 判断奇数偶数
    原理:%取模,对 2 取余等于 0 就是偶数,否则奇数
    //判断奇数还是偶数 int num=10; if(num%2==0) { System.out.println("偶数"); } else { System.out.println("奇数"); }
  2. 判断正数、负数、零
    int num=10; if(num>0) { System.out.println("正数"); } else if (num<0) { System.out.println("负数"); } else { System.out.println("0"); }
  3. 判断闰年

    闰年规则:

    世纪年份(能被 100 整除):必须同时被 400 整除才是闰年
    普通年份:能被 4 整除就是闰年
    int year=2000; if(year%100==0) { if(year%400==0) { System.out.println("闰年"); } else { System.out.println("不是闰年"); } } else { if(year%4==0) { System.out.println("闰年"); } else { System.out.println("不是闰年"); } }
    // int year=2000; // if((year%4==0&&year%100!=0)||(year%400==0)) // { // System.out.println("闰年"); // } // else { // System.out.println("不是闰年"); // }
  4. 分号陷阱
    分号代表一条空语句结束
    等价于:if 只控制空语句,后面{}是独立代码块,无论 if 条件真假,大括号代码永远执行
    int x=20; if(x==10); //由于有分号,分号代表语句结束,不会判断if条件 //下面的代码块正常执行 { System.out.println("hehe"); }
  5. 悬垂 else 问题
    Java 规则else 总是匹配离它最近的没有配对的 if
    int x=10; int y=20; if(x==10) if(y==10) System.out.println("aaa"); else System.out.println("hehe");

    为了消除歧义,建议加花括号

switch 语句

  1. 基本语法
    switch(表达式){ case 常量值1:{ 语句1; [break;] } case 常量值2:{ 语句2; [break;] } ... default:{ 内容都不满足时执行语句; [break;] } }
  2. 执行流程
    a)先计算switch 括号中表达式的值
    b)和各个case后面的常量依次比较,匹配成功就执行该 case 里面的代码,直往下 执行直到遇到 break 才结束 switch
    c)所有 case 都不匹配时执行default里面的代码
  3. 注意事项
    a)case 常量不能重复
    b)switch 表达式允许的数据类型
    基本类型:bytecharshortint不允许 long、double、float
    引用类型:String字符串、枚举类型
    double num=1.0; switch(num) //编译报错,double类型的不能放switch里 { case 1.0: System.out.println("haha"); }

    c)break 不要遗漏, 否则会失去 "多分⽀选择" 的效果

    d)switch 适合等值匹配,不适合区间判断
    // 区间条件只能if if (num > 10 && num < 20) { System.out.println("hehe"); }

    e)switch 支持嵌套,但不推荐

循环结构

while 循环

  1. 语法
    循环条件:

    true执行循环体;
    false结束循环

    while(循环条件) { 循环语句; }
  1. 打印 1‑10
    //打印1--10 int num=1; while(num<=10) { // System.out.println(num); System.out.printf("%d ",num); num++; }
  2. 计算 1‑100 和
    int n=1; int sum=0; while(n<=100) { sum+=n; n++; } System.out.println(sum);

  3. int n=1; int result=1; while(n<=5) { result*=n; n++; } System.out.println(result);


  4. 思路:
    a)算每一个数字的阶乘
    b)把每一个阶乘结果全部累加起来
    int num=1; int sum=0; while(num<=5) { int factorResult=1; //保持当前数字的阶层 int tmp=1; while(tmp<=num) { factorResult*=tmp; tmp+=1; } sum+=factorResult; num++; } System.out.println(sum);
  5. while 注意事项
    a)不写{}只跟一条语句,建议始终加大括号
    b)while(条件)后面不要多加;

break

  1. break 作用:直接结束整个循环,跳出循环,循环彻底终止
  2. 找 100‑200 之间第一个3 的倍数
    int num=100; while(num<=200) { if(num%3==0) { System.out.println("找到了一个三的倍数为:"+num); break; // break 是跳出整个循环,不在往下判断 } // 要num++ 否则会死循环 num++; }
  3. 关键点:break跳出自己所在的那一层循环

continue

  1. continue 作用跳过本次循环剩下代码,立刻进入下一次循环条件判断循环不结束只是跳过这一轮

  2. 找出 100‑200全部3 的倍数
    int num=100; while(num<=200) { if(num%3!=0) { // 要更新变量 num++; continue; } System.out.println(num); num++; }

    逻辑:
    a) 如果这个数不是 3 的倍数num++,执行continue,后面打印语句直接跳过, 回到while(num <=200)判断下一轮
    b) 如果是 3 的倍数:不走 continue,执行打印,再num++

  3. continue 踩坑点
    while(num <=200){ if(num%3!=0){ continue; num++; // 永远执行不到!continue直接跳走了 } System.out.println(num); num++; }

    continue后面的代码不会执行循环变量更新一定要写在 continue 前面

for 循环

  1. 语法格式
    for(表达式1;布尔表达式2;表达式3){ 表达式4; //循环体代码 }
  2. 表达式 1:初始化循环变量,只执行 1 次,最开始跑
    表达式 2:循环条件,true 执行循环体;false 循环结束
    表达式 3:循环变量更新(i++)
    表达式 4:循环体

  3. 执行顺序:1 只跑一次;2 判断;4 干活;3 更新,回到 2

  1. 打印 1‑10
    for(int i=1;i<=10;i++) { System.out.printf("%d ",i); } System.out.println();
  2. 计算 1‑100 的和
    //计算1- 100 的和 int sum=0; for(int i=1;i<=100;i++) { sum+=i; } System.out.println(sum); System.out.println();
  3. 计算 5 的阶乘 5! =1*2*3*4*5
    //计算 n 的阶层 int res=1; for(int i=1;i<=5;i++) { res*=i; } System.out.println(res);
  4. 计算 1!+2!+3!+4!+5! for 嵌套 for
    int sum=0; for(int i=1;i<=5;i++) { int tmp=1; //重置 tmp = 1 for(int j=1;j<=i;j++) { tmp*=j; } sum+=tmp; } System.out.println(sum);
  5. for 循环注意事项
    a)不写{},只执行紧跟的第一条语句,开发建议永远写大括号
    b)for( )括号后面千万不要随便加分号
    c)break:结束整个 for 循环continue:跳过本轮循环
    d)表达式2如果缺失,代表该循环为死循环

do‑while 循环

  1. 特点:先执行循环体,再判断条件,循环体至少执行 1 次
  2. 语法
    do{ 循环语句; }while(循环条件); // 末尾必须写分号 ;
  3. 打印 1--10
    int num=1; do{ System.out.printf("%d ",num); num++; }while(num<=10); System.out.println();

小试牛刀

判断数字是否为素数

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 6:43:36

C++ 里 argc 和 argv 到底有什么用?

最近在啃一个自动驾驶 SLAM 的开源项目&#xff0c;编译跑通之后想改改参数&#xff0c;看着 main 函数签名里的 int argc, char** argv&#xff0c;突然意识到自己虽然背得下来"argc 是参数个数&#xff0c;argv 是参数字符串数组"&#xff0c;但一直没真正想清楚—…

作者头像 李华
网站建设 2026/9/6 6:40:55

基于ARM的数字集成电路测试系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 6:39:36

【leetcode】42.接雨水js

文章目录 题目代码 题目 代码 核心是短板原理&#xff1a; 接的雨水 min(maxLeft, maxRight) - height[i] 但要怎么体现在代码里呢&#xff1f;一开始想的是Math.min()&#xff0c;但学习的时候发现题解里min的影都没见到&#xff0c;而是对比height[left]和height[right]就可…

作者头像 李华
网站建设 2026/9/6 6:39:19

8G显存本地跑视频生成:MiniMax H3+ComfyUI整合包实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 6:37:32

单片机关于按钮消抖方法

抖动原因:按钮内部铁片按下时和松开时&#xff0c;会有抖敏动&#xff0c;导致多次识别按钮按下&#xff0c;从而出现失灵不灵现象按下抖动和释放抖动时间约20毫秒解决方法:用烧写软件生成一个20毫秒延时程序放入代码中&#xff0c;其中wile用来锁定&#xff0c;key10&#xff…

作者头像 李华