【JavaSE】逻辑控制

顺序结构

顺序结构是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

分支结构


if…else语句

  • 基本语法形式1
if(布尔表达式)
{
   //如果布尔表达式为true将执行的语句
}
  • 基本语法形式2(单分支)
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
  • 基本语法形式3(多分支)
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}

代码示例:

  1. code1(判断数字奇偶性)
    public static void main(String[] args) {
        int a = 10;
        if(a % 2 == 0){
            System.out.println("偶数");
        }else{
            System.out.println("奇数");
        }
    }
  1. code2(判断数字正负)
    public static void main(String[] args) {
        int a = -121;
        if(a > 0){
            System.out.println("正数");
        }else{
            System.out.println("负数");
        }
    }
  1. code3(判断是否闰年)
    public static void main(String[] args) {
        int year = 2011;
        if((year % 100 != 0 && year % 4 == 0) || (year % 400 == 0)){
            System.out.println(year + "闰年");
        }else{
            System.out.println(year + "不是闰年");
        }
    }

swtich…case语句

  • 基本语法
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
  • code
    public static void main(String[] args) {
        int a = 1;
        switch (a){
            case 1:
                System.out.println(a);
                break;
            case 2:
                System.out.println(a);
                break;
            default:
                System.out.println("参数都不匹配");
                break;
        }
    }

注:在swtich中long/float/double/boolean不可以作为Swtich的参数

循环结构

while循环

while(循环条件){
循环语句;//循环条件为 true, 则执行循环语句; 否则结束循环
}
  1. code(打印1~10的数字)
    public static void main(String[] args) {
        int a = 1;
        while( a <= 10){
            System.out.println("a = " +a);
            a++;
        }
    }

在这里插入图片描述

  1. code(计算1~10的和)
    public static void main(String[] args) {
        int sum = 0;
        int n = 1;
        while(n <= 10){
            sum += n;
            n++;
        }
        System.out.println("sum = " + sum);
    }

在这里插入图片描述

  1. code(计算5!)
    public static void main(String[] args) {
        int n = 1;
        int ans = 1;
        while(n <= 5){
            ans *= n;
            n++;
        }
        System.out.println(ans);
    }

在这里插入图片描述

  1. code(计算 1! + 2! + 3! + 4! + 5!)
   public static void main(String[] args) {
        int n = 1;
        int m = 1;
        int sum = 0;
        while(n <= 5){
            int ret = 1;
            m = 1;
            while(m <= n){
                ret *= m;
                m++;
            }
            sum += ret;
            n++;
        }
        System.out.println(sum);
    }

在这里插入图片描述

break

  • break 的功能是让循环提前结束.

  • code(找到 100 - 200 中第一个 3 的倍数)

    public static void main(String[] args) {
        int n = 1;
        while(n <= 100){
            if(n % 3 == 0){
                System.out.println("找到了 3 的倍数, 为:" + n);
                break;
            }
            n++;
        }
    }

continue

continue 的功能是跳过这次循环, 立即进入下次循环
  • code(找到 100 - 200 中所有 3 的倍数)
    public static void main(String[] args) {
        int n = 100;
        while(n <= 200){
            if(n %3 != 0){
                n++;
                continue;
            }
            System.out.println(n);
            n++;
        }
    }

do…while循环

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

先执行循环语句, 再判定循环条件

  • Code(打印1~10)
    public static void main(String[] args) {
        int num = 1;
        do{
            System.out.println(num);
            ++num;
        }while (num <= 10);
    }

for循环

for(表达式1;表达式2;表达式3){
循环体;
}
  • 表达式1: 用于初始化循环变量.
  • 表达式2: 循环条件
  • 表达式3: 更新循环变量
  1. Code(打印1~10的数字)
    public static void main(String[] args) {
        for(int i = 1; i <= 10;i++){
            System.out.println("i = " + i);
        }
    }
  1. Code(计算1~100的和)
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1;i <= 10;i++){
            sum += i;
        }
        System.out.println("sum = "+ sum);
    }
  1. Code(计算5的阶乘)
    public static void main(String[] args) {
        int ans = 1;
        for(int i = 1; i <= 5; i++){
            ans *= i;
        }
        System.out.println(ans);
    }
  1. Code(计算 1! + 2! + 3! + 4! + 5!))
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1; i <= 5; i++){
            int tmp = 1;
            for(int j = 1;j <=i; j++){
                tmp *= j;
            }
            sum += tmp;
        }
        System.out.println(sum);
    }

输入和输出

输出到控制台

    public static void main(String[] args) {
        System.out.println("输出且换行");
        System.out.print("输出不换行");
        System.out.printf("%d\n",10);
    }

在这里插入图片描述

  • 格式化转化符
转换符类型举例
d十进制整数("%d", 100)
x十六进制整数("%x", 100)
o八进制整数("%o", 100)
f定点浮点数("%f", 100f)
e指数浮点数("%e", 100f)
g通用浮点数("%g", 100f)
a十六进制浮点数("%a", 100)
s字符串("%s", 100)
c字符("%c", ‘1’)
b布尔值("%b", 100)
h散列码("%h", 100)
%百分号("%.2f%%", 2/7f)

键盘输入

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        System.out.println(str);

        int a = scanner.nextInt();
        System.out.println(a);

        double b = scanner.nextDouble();
        System.out.println(b);
    }

在这里插入图片描述
注:

  1. 有多个不同类型数据读取时,读取字符串时应该先读取,否则会把回车当作下一个数据,导致出错。
  2. scanner.next()遇到空格停止接受数据,scanner.nextLine()是读取到回车停止
  • 读取多个整数
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()){
            int n = scanner.nextInt();
            System.out.println(n);
        }
    }
  • 猜数字游戏
    public static void main(String[] args) {
        Random random = new Random();
        int rand = random.nextInt(100);//生成范围[0~100)
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请输入你猜的数字");
            int n = scanner.nextInt();
            if(n < rand){
                System.out.println("猜小了");
            }else if(n == rand){
                System.out.println("猜对了");
                break;
            }else if(n > rand){
                System.out.println("猜大了");
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zzt.opkk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值