Java编程:逻辑控制三大结构详解

逻辑控制分为三部分,分别为顺序执行,选择执行以及循环执行

一,顺序执行(顺序结构):

即顺序执行代码,这部分没有什么特别要说的就简单概括一下

顺序执行是java中的默认执行程序,有代码编写顺序决定执行流程,说人话就是从上到下,从左到右依次按顺序运行(没有特殊控制结构的前提下)

那么,何为特殊控制结构呢?

特殊控制结构有分支,循环,线程等,接下来我会详细分析这些

二,选择执行 (分支结构)    if    switch

1,if 语句

语法格式1

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

语法格式2

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

语法格式3

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

2,练习:

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("正数");
} else if (num < 0) {
System.out.println("负数");
} else {
System.out.println("0");
}
3,判断一个年份是否为闰年
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("不是闰年");
}
}

2,switch 语句

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

注意事项
多个case后的常量值不可以重复
switch的括号内只能是以下类型的表达式:
基本类型:bytecharshortint,注意不能是long类型
引用类型:String常量串、枚举类型
switch 虽然支持嵌套, 但是很丑,一般不推荐~

三,循环执行  (循环结构)  while  for   do while 

1,while 循环

基本语法格式:

while(循环条件){
循环语句;
}
循环条件为 true, 则执行循环语句; 否则结束循环

代码示例:计算 1! + 2! + 3! + 4! + 5!

int num = 1;
int sum = 0;
// 外层循环负责求阶乘的和
while (num <= 5) {
int factorResult = 1;
int tmp = 1;
// 里层循环负责完成求阶乘的细节.
while (tmp <= num) {
factorResult *= tmp;
tmp++;
}
sum += factorResult;
num++;
}
System.out.println("sum = " + sum);
注意事项
1. if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. if 类似, while 后面的 { 建议和 while 写在同一行.
3. if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

2, break

能让循环提前结束

代码示例: 找到 100 - 200 中第一个 3 的倍数

int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
// 执行结果
找到了 3 的倍数, 为:102

执行到break就会让循环结束

3,continue

可以跳过此次循环立即进入下一循环

代码示例: 找到 100 - 200 中所有 3 的倍数
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 这里的 ++ 不要忘记! 否则会死循环.
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
num++;
}
执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句.

4,for 循环

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

5,do while 循环

先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。
【注意事项】
1. do while 循环最后的分号不要忘记
2. 一般 do while 很少用到, 更推荐使用 for while.

四,输入输出

基本语法
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
1,println 输出的内容自带 \n, print 不带 \n
2,printf 的格式化输出方式和 C 语言的 printf 是基本一致的

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

五,从键盘输入

使用 Scanner 读取字符串/整数/浮点数
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(); // 注意, 要记得调用关闭方法
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名: 张三
年龄:18
工资:1000.0
使用 Scanner 循环读取 N 个数字,并求取其平均值
Scanner sc = new Scanner(System.in);
int sum = 0;
int num = 0;
while (sc.hasNextInt()) {
int tmp = sc.nextInt();
sum += tmp;
num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
// 执行结果
10
40.0
50.5
^Z
sum = 150.5
avg = 30.1
注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d)

六,猜数字游戏

要求:
系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 "低了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了
import java.util.Random;
import java.util.Scanner;;
class Test {
public static void main(String[] args) {
Random random = new Random(); // 默认随机种子是系统时间
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100);
// System.out.println("toGuess: " + toGuess);
while (true) {
System.out.println("请输入要输入的数字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("低了");
} else if (num > toGuess) {
System.out.println("高了");
} else {
System.out.println("猜对了");
break;
}
}
sc.close();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值