逻辑控制

  • 回顾复习
  • 逻辑控制
  • 一、顺序结构
  • 二、分支结构
    • 1. if语句
      • 【注意事项】:
      • 【补充】
    • 2. switch语句
      • 【注意事项】
  • 三、循环结构
    • 1. while循环
      • 【注意事项】
    • 2. break语句
    • 3. continue语句
    • 4. for循环
      • 【注意事项】
    • 5. do while 循环(选学)
  • 四. 输入输出
    • 1. 输出到控制台
    • 2. 从键盘输入
  • 六、猜数字游戏
    • 1. 随机数生成
    • 2. 代码
  • 七、练习
  • THINK

回顾复习

努力学习 一步一步来!
运算符
如:&& || >>>(无符号右移:左边的统统补0)-没有无符号左移


努力终会有收获的!

逻辑控制

逻辑控制有三种结构:顺序、选择、循环结构。

一、顺序结构

  1. 顺序结构比较简单,按照代码书写的顺序一行一行执行
  2. 如果调整代码的书写顺序, 则执行顺序也发生变化。

二、分支结构

1. if语句

  1. 单分支语句
    注意:if的参数一定是布尔表达式!!

if(布尔表达式) {
// 语句
}

  1. 双分支语句

if(布尔表达式) {
// 语句1
} else {
// 语句2
}

  1. 多分支语句

if(布尔表达式1) {
// 语句1
} else if(布尔表达式2) {
// 语句2
} else {
// 语句3
}
//注意else if 以及ellse等的位置

  1. 补充:

补充输入语句
import java.util.Scanner; // 导包,类似于c语言的#
include
Scanner scanner(scanner 是变量名,小驼峰-可自己命名) = new Scanner(System.in); //–代表从键盘获取;
int a = scaner.nextInt(); --读入一个int类型数据

  • 补充: next();读入小数 or字符串不含空格
    nextLine(); //读入一行,含有空格

补充循环输入–while(scanner.hasNextInt())
ctrl + D --退出循环

  1. 例题:判断一个年份是否为闰年

【注意事项】:

  1. 代码风格:
    任何情况下都不要省略{}!!
// 风格1-----> 推荐
int x = 10;
if (x == 10) {
// 语句1
} else {
// 语句2
}// 风格2
int x = 10;
if (x == 10) {
// 语句1
}else {// 语句2}

虽然两种方式都是合法的, 但是 Java 中更推荐使用风格1, { 放在 if / else 同一行. 代码更紧凑。

  1. 分号问题:分号代表着一条语句
int x = 20;
if (x == 10);
{System.out.println("hehe"); }// 运行结果 hehe

此处多写了一个 分号(if后面), 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块

  1. 悬垂 else 问题
    else 是和最接近的 if 匹配
int x = 10;
int y = 10;
if (x == 10) if (y == 10) System.out.println("aaa");
elseSystem.out.println("bbb");

if / else 语句中可以不加 大括号 , 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配.
但是实际开发中我们 不建议 这么写,最好加上大括号.

【补充】

  1. 局部变量存放到栈中,栈中的地址是拿不到的
  2. 调试:
    1)打断点 – 调试
    (条件断点–右击设置)

2)所有变量都会自动显示至variables
3)功能介绍


2. switch语句

  1. 基本语法:
    (case 常量值:–冒号不能丢!!)
switch(表达式){case 常量值1:{语句1;
[break;]
}
case 常量值2:{语句2;
[break;]
}
default:{内容都不满足时执行语句;
[break;]
}
}
  1. 遇到break才结束执行!!
  2. 注意:
    break不省略!!!
    建议default放到最后!
  3. 面试问题:

不能做switch的参数的类型: long float double boolean
补:字符串以及枚举(1.5之后版本才有)都可以、byte 、char、short、int可以作为参数

  1. case 后面内容跟switch参数形式保持一致
  2. 执行流程:

1) 先计算表达式的值
2) 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
3)当表达式的值没有与所列项匹配时,执行default

【注意事项】

  1. 多个case后的常量值不可以重复
  2. switch的括号内只能是以下类型的表达式:
    基本类型:byte、char、short、int,注意不能是long类型
    引用类型:String常量串、枚举类型
  3. break 不要遗漏, 否则会失去 “多分支选择” 的效果(即:会一直向下运行,直至遇到break或者程序结束)
  4. switch 不能表达复杂的条件,if可以表达复杂的条件
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 10 && num < 20) {
System.out.println("hehe");
}
  1. switch 虽然支持嵌套, 但是很丑,一般不推荐~
  2. 综上, switch 的使用局限性是比较大的。

三、循环结构

三种循环结构:while、for、do…while

1. while循环

  1. 基本语法:
    (注意:条件一定是布尔表达式!!)
while(布尔表达式){
循环语句;
}
  1. 例题:计算1-100奇数(Eve)和 and 偶数(Odd)和
  • 两种方法:偶数加和 or +=2 --注意i重新赋值!!
  • 代码:
import org.w3c.dom.ls.LSOutput;/*** 计算1-100奇数(Eve)和 and 偶数(Odd)和*/public class Sum {public static void main(String[] args) {int i = 1;int eveSum =0;int oddSum =0;int sum =0;while(i <= 100) {eveSum += i;i += 2;}i = 0; //注意重新赋值while(i <= 100) {oddSum += i;i += 2;}i = 0;while(i <= 100) {sum += i;i ++;}System.out.println("1-100奇数(Eve)和"+eveSum);System.out.println("1-100偶数(Odd)和"+oddSum);System.out.println("1-100和"+sum);}
}
  • 结果:
  • 例题:计算 1! + 2! + 3! + … +n!
  • 代码:
import java.util.Scanner;/*** 计算 1! + 2! + 3! + ... +n!*/public class Fib {public static void main(String[] args) {System.out.println("请输入n:");Scanner reader = new Scanner(System.in);int n = reader.nextInt();int i = 1;int sum =0;int fib = 1;while(i <= n) {fib *= i;sum += fib;i++;}System.out.println(n+"阶乘和:");System.out.println(sum);}
}
  • 结果:

【注意事项】

  1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
  2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
  3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.
int num = 1;
while (num <= 10); {
System.out.println(num); num++;
}
// 执行结果 [无任何输出, 程序死循环]

此时 ; 为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关. 此时循环条件 num <= 10 恒成立, 导致代码死循环了.

2. break语句

功能:提前结束所有循环,即退出当前的整个循环

3. continue语句

  • 功能:结束本趟循环,即:后面的代码不执行,开
    始下一次循环
  • 例题
    1-100之间所有既是3的倍数又是5的倍数的所有数据【continue】实现
  • 代码:
    方法一:
/*** 1-100之间所有既是3的倍数又是5的倍数的所有数据【continue】实现*/public class Find {public static void main(String[] args) {int i =0;System.out.println("1-100之间所有既是3的倍数又是5的倍数的所有数据:");while(i < 100) {i++;if((0 == i % 3) && (0 == i % 5)) {System.out.print(i + " ");continue;}}}
}

方法二:(注意 逻辑或

/*** 1-100之间所有既是3的倍数又是5的倍数的所有数据【continue】实现*/public class Find {public static void main(String[] args) {int i =0;System.out.println("1-100之间所有既是3的倍数又是5的倍数的所有数据:");while(i < 100) {i++;if(( i % 3 != 0) || (i % 5 != 0)) {continue;}System.out.print(i + " ");}}
}
  • 结果:

4. for循环

  1. 基本语法:
    (表达式2是布尔表达式!)
for(表达式①;布尔表达式②;表达式③){
表达式④; //结构体
}
  • 表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
  • 表达式2:循环条件,满则循环继续,否则循环结束
  • 表达式3: 循环变量更新方式
  1. 执行流程:

  2. 所有题目都可以用for循环

  3. 例题:计算 1! + 2! + 3! + … + n!

  • 代码:
import java.util.Scanner;/*** 计算 1! + 2! + 3! + ... + n!* for循环实现*/public class FibSum {public static void main(String[] args) {System.out.println("请输入n:");Scanner reader = new Scanner(System.in);int n = reader.nextInt();int sum =0;int fib = 1;for(int i =1; i <= n; i++) {fib *= i;sum += fib;}System.out.println(n+"阶乘和:");System.out.println(sum);}
}
  • 结果:

【注意事项】

(和while循环类似)

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

5. do while 循环(选学)

  1. 基本语法:
    (注:while后面有;)
do{循环语句;
}while(循环条件);
  1. 不管满不满足条件,先执行一次
  2. 【注意事项】
  • do while 循环最后的分号不要忘记
  • 一般 do while 很少用到, 更推荐使用 for 和 while.
  1. 补充:死循环

while(true)
for( ; ; ) or for(;true ; )

四. 输入输出

1. 输出到控制台

  1. 基本语法:
System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出
  1. 注意:

println 输出的内容自带 \n, print 不带 \n
printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

  1. 格式化字符串

    (这个表格没必要记住, 用到的时候根据需要查一下就行了)

2. 从键盘输入

使用 Scanner 读取字符串/整数/浮点数

  1. 示例如下:
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in); System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:"); System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close(); // 注意, 要记得调用关闭方法
  1. 相关与区分
    (Scanner reader = new Scanner(System.in)

    【JAVA】逻辑控制相关推荐

    1. java/02/java运算符,java逻辑控制,java方法的定义及使用

      java/02/java运算符/java逻辑控制/java方法的定义及使用 运算符 如"="是赋值运算符,四则运算也是运算符. 在程序中运算的式子要简化,用简单的式子 以下运算符可 ...

    2. 初始java ~ 逻辑控制

      文章目录 顺序结构 分支结构(选择结构) 1.if语句 2.switch 语句 循环结构 1. while 循环 2. break和continue 3. for 循环 4. do while 循环 ...

    3. 2.java运算符与逻辑控制

      运算符和逻辑控制 运算符 java中的运算符可以分为以下几种: 算符运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 三目运算符 算符运算符 操作符 描述 + 加法 - 减法 * 乘法 / 除法 ...

    4. 【CXY】JAVA基础 之 逻辑控制

      概述: Java语句(流程控制.逻辑控制) 关键字:if.switch.while.do while.for.break.continue.return package com.cxy.base;/* ...

    5. JAVA程序的逻辑控制及输入输出

      为什么会有逻辑控制? 我们把我们想实现的功能转化成程序让计算机辅助我们达到预期的效果.程序本身是按照代码顺序自上而下顺序的一条条执行的,但我们的思维并不是直线式的. 比如今天不下雨,我会出门爬山:今天 ...

    6. java中 基础 知识 逻辑控制

      文章目录 逻辑控制 本文 将学习到 选择语句 和 循环语句,最后 还有输入输出 语句.  if 语句   如果 满足 if 中的条件 那么 执行 if 语句中的内容, 如果不 满足 if 满足 els ...

    7. Java程序逻辑控制

      Java程序逻辑控制 1. 顺序结构 2.分支结构 2.1 if 语句 2.2 switch 语句 3.循环结构 3.1 while 循环 3.2 break 3.3 continue 3.4 for ...

    8. 一步带你了解java程序逻辑控制

      目录 一.java中的程序逻辑分类 1.顺序结构: 2.分支结构 (1)单分支结构(if语句) (2)多分支结构(if-else if-else) (3)switch语句 注意事项: 3循环结构 (1 ...

    9. Java学习笔记——程序逻辑控制

      9.27-9.29 1.分支结构:if,if-else,switch //三个分支结构的综合运用 package classe; import java.util.*; public class he ...

    最新文章

    1. python2 urllib 笔记
    2. 好久没更新日志了啊~!!今天发一个AS3的播放器
    3. shell-sed命令详解(转)
    4. p1273  日常打表
    5. python汽车行驶工况_什么叫车辆行驶工况
    6. c语言边序列构造邻接表,结构C语言版期末考试考试(有答案).doc
    7. 余承东宣布鸿蒙系统视频,余承东宣布鸿蒙系统开源:打造全球的操作系统
    8. 【MFC开发(12)】图片框控件 Picture Control
    9. ERP财务管理模块包括什么
    10. PS高斯模糊后变清晰(智能滤镜、蒙版)的使用
    11. IJCAI2021 Person Re-identification相关论文集合推荐
    12. 133.Python修炼之路【138-前端-JQuery-Json】2018.08.02
    13. dsp版win10和普通版区别_Win10和 Windows10版本区别是什么?
    14. 探店「无聊猿」BAYC 主题餐厅:食物都很棒,口味超预期,有点小贵
    15. android 简易的猜拳小游戏
    16. PC时代的20位英雄
    17. Module parse failed: Unexpected token(双问号无法识别)
    18. 过来人如何学STM32呢??
    19. 任性杭州,骨感北京——面试汇总
    20. 实验六 进程间通信——共享内存

    热门文章

    1. java中switch语句用法详解
    2. arm架构服务器安装系统教程,docker服务在arm平台上部署安装方法
    3. java applet 一个简单的例子(applet+html)
    4. chrome浏览器中自带input样式input:-internal-autofill-selected(修改input背景色)
    5. 金立GIONEE F205L手机刷机资料售后线刷包附教程
    6. 怎么恢复计算机误删的用户组,如何恢复误删的用户组
    7. App推广:三大思路与解决方案
    8. scoop下载安装教程,无报错,超简单。
    9. 你真的了解单点登录(SSO)吗? 单点登录实现方式
    10. 安装Apache服务