Java—程序逻辑控制

Java—程序逻辑控制_第1张图片

目录

一,写在前面

二,顺序结构

 三,分支结构

1,if 语句

 2,switch 语句

三,循环结构

1,while 循环

2,break

 3,continue

 4,for 循环

四,输入输出

1,输出到控制台

2,从键盘输入

五,基础练习

1,年龄分析

2,判断一个数是否为素数

3,输出 1000 - 2000 之间所有的闰年

4,输出乘法口诀表

 5,求两个正整数的最大公约数

 6,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。


一,写在前面

如果你对Java感兴趣,那么你可以关注我这个小博主,你信任我,我也会提升我博客的质量,最好是保姆级教学,保证就算你是小白看过我的博客后,你也能学的懂,当然你最起码要懂一点最基本的编程语言知识。如果你认为本篇博客写的不错的话,求点赞,求评论,求收藏。

二,顺序结构

顺序结构比较简单. 像我们之前写过的代码就是顺序结构的, 按照代码书写的顺序一行一行执行。

public static void main(String[] args) {
        System.out.println("aaa");
        System.out.println("bbb");
        System.out.println("ccc");
    }

Java—程序逻辑控制_第2张图片

 如果调整代码的书写顺序, 则执行顺序也发生变化

 public static void main(String[] args) {
        System.out.println("aaa");
        System.out.println("ccc");
        System.out.println("bbb");
    }

Java—程序逻辑控制_第3张图片

 三,分支结构

1,if 语句

基本语法形式1

if(布尔表达式){
    //条件满足时执行代码
}

基本语法形式2

if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件不满足时执行代码
}

基本语法形式3 

if(布尔表达式){
    //条件满足时执行代码
}else if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件都不满足时执行代码
}

代码示例1: 判定一个数字是奇数还是偶数

public static void main(String[] args) {
        int num = 10;
        if (num % 2 == 0) {
            System.out.println("num 是偶数");
        } else {
            System.out.println("num 是奇数");
        }
    }

Java—程序逻辑控制_第4张图片

代码示例2: 判定一个数字是正数还是负数

 public static void main(String[] args) {
        int num = 10;
        if (num > 0) {
            System.out.println("num 是正数");
        } else if (num < 0) {
            System.out.println("num 是负数");
        } else {
            System.out.println("num 是 0");
        }
    }

Java—程序逻辑控制_第5张图片

 代码示例3: 判定某一年份是否是闰年

 public static void main(String[] args) {
        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("不是闰年");
            }
        }
}

Java—程序逻辑控制_第6张图片

悬垂 else 问题

   public static void main(String[] args) {
        int x = 10;
        int y = 10;
        if (x == 10)
            if (y == 10)
                System.out.println("aaa");
            else
                System.out.println("bbb");
    }
//书写代码时,尽量在if和else加括号

Java—程序逻辑控制_第7张图片

 2,switch 语句

基本语法

switch(整数|枚举|字符|字符串){
 case 内容1 : {
 内容满足时执行语句;
 [break;]
 }
 case 内容2 : {
 内容满足时执行语句;
 [break;]
 }
 ...
 default:{
 内容都不满足时执行语句;
 [break;]
 } 
}

代码示例: 根据 day 的值输出星期

  public static void main(String[] args) {
        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("输入有误");
                break;
        }
    }

Java—程序逻辑控制_第8张图片

根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句. 如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句. 我们建议一个 switch 语句最好都要带上 default。

注意事项1 break 不要遗漏, 否则会失去 "多分支选择" 的效果

public static void main(String[] args) {
        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");
                // break;
            case 2:
                System.out.println("星期二");
                break;
        }

    }

Java—程序逻辑控制_第9张图片

 注意事项2 switch 中的值只能是 整数|枚举|字符|字符串

   public static void main(String[] args) {
        double num = 1.0;
        switch(num) {
            case 1.0:
                System.out.println("hehe");
                break;
            case 2.0:
                System.out.println("haha");
                break;
        }
    }

Java—程序逻辑控制_第10张图片

 注意事项3 switch 不能表达复杂的条件

/ 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示. 
if (num > 10 && num < 20) {
 System.out.println("hehe");
}

三,循环结构

1,while 循环

基本语法格式:

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

代码示例1: 打印 1 - 10 的数字

 public static void main(String[] args) {
        int num = 1;
        while (num <= 10) {
            System.out.print(" "+num);
            num++;
        }
    }

Java—程序逻辑控制_第11张图片

 代码示例2: 计算 1 - 100 的和

  public static void main(String[] args) {
        int n = 1;
        int result = 0;
        while (n <= 100) {
            result += n;
            n++;
        }
        System.out.println(result);
    }

Java—程序逻辑控制_第12张图片

代码示例3: 计算 5 的阶乘

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

Java—程序逻辑控制_第13张图片

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

public static void main(String[] args) {
        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);
    }

Java—程序逻辑控制_第14张图片

注意事项

1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.

3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

int num = 1; 
while (num <= 10); { 
 System.out.println(num); 
 num++; 
} 
// 执行结果
[无任何输出, 程序死循环]

2,break

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

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

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

Java—程序逻辑控制_第15张图片

 3,continue

continue 的功能是跳过这次循环, 立即进入下次循环

代码示例: 找到 100 - 200 中所有3 的倍数

  public static void main(String[] args) {
        int num = 100;
        while (num <= 200) {
            if (num % 3 != 0) {
                num++; // 这里的 ++ 不要忘记! 否则会死循环.
                continue;
            }
            System.out.println("找到了 3 的倍数, 为:" + num);
            num++;
        }
    }

Java—程序逻辑控制_第16张图片

 4,for 循环

基本语法

for(表达式1;表达式2;表达式3){ 
循环体; 
} 

表达式1: 用于初始化循环变量.

表达式2: 循环条件

表达式3: 更新循环变量

代码示例1: 打印 1 - 10 的数字

for (int i = 1; i <= 10; i++) { 
 System.out.println(i); 
} 

代码示例2: 计算 1 - 100 的和

int sum = 0; 
for (int i = 1; i <= 100; i++) { 
 sum += i; 
} 
System.out.println("sum = " + sum); 
// 执行结果
5050 

代码示例3: 计算 5 的阶乘

int result = 0; 
for (int i = 1; i <= 5; i++) { 
 result *= i; 
} 
System.out.println("result = " + result); 

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

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 = " + sum);

注意事项 (和while循环类似)

1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.

3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.

四,输入输出

1,输出到控制台

基本语法

  public static void main(String[] args) {
        System.out.println("msg"); // 输出一个字符串, 带换行
        System.out.print("msg"); // 输出一个字符串, 不带换行
        System.out.printf("format, msg"); // 格式化输出
    }

Java—程序逻辑控制_第17张图片

println 输出的内容自带 \n,

print 不带 \n printf 的格式化输出方式和 C 语言的 printf 是基本一致的

格式化字符串

转换符 类型 举例

d

十进制整数 ("%d", 100) 100
x 十六进制整数 ("%x", 100) 64
f 定点浮点数 ("%f", 100) 100.000000
e 指数浮点数 ("%e", 100) 1.000000e+02
g 通用浮点数 ("%g", 100) 100.000
a 十六进制浮点数 ("%a", 100) 0x1.9p6
s 字符串 ("%s", 100) 100
c 字符 ("%c", 1) 1
b 布尔值 ("%b", 100) true
h 散列码 ("%h", 100) 64
o 八进制整数 ("%o", 100) 144
% 百分号 ("%.2%%", 2/7f) 0.29%

2,从键盘输入

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

import java.util.Scanner; // 需要导入 util 包
public class fsfa {
    public static void main(String[] args) {
        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(); // 注意, 要记得调用关闭方法
    }
}

Java—程序逻辑控制_第18张图片

使用 Scanner 循环读取 N 个数字

import java.util.Scanner; // 需要导入 util 包
public class fsfa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double sum = 0.0;
        int num = 0;
        while (sc.hasNextDouble()) {
            double tmp = sc.nextDouble();
            sum += tmp;
            num++;
        }
        System.out.println("sum = " + sum);
        System.out.println("avg = " + sum / num);
        sc.close();
    }
}

Java—程序逻辑控制_第19张图片

五,基础练习

1,年龄分析

根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)

  public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        if(n > 0 && n < 18) {
            System.out.println("少年");
        }else if(n >= 18 && n < 29) {
            System.out.println("青年");
        }else if(n >= 29 && n < 56) {
            System.out.println("中年");
        }else {
            System.out.println("老年");
        }
    }

Java—程序逻辑控制_第20张图片

2,判断一个数是否为素数

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i = 2;
        for (; i < n; i++) {
            if(n % i == 0) {
                System.out.println(n+" 不是素数!");
                break;
            }
        }
        //2种情况
        if( i == n) {
            System.out.println(n + " 是素数!");
        }
    }

Java—程序逻辑控制_第21张图片

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i = 2;
        for (; i <= n/2; i++) {
            if(n % i == 0) {
                System.out.println(n+" 不是素数!");
                break;
            }
        }
        //2种情况
        if( i > n/2) {
            System.out.println(n + " 是素数!");
        }
    }

Java—程序逻辑控制_第22张图片

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i = 2;
        for (; i <= Math.sqrt(n); i++) {
            if(n % i == 0) {
                System.out.println(n+" 不是素数!");
                break;
            }
        }
        //2种情况
        if( i > Math.sqrt(n)) {
            System.out.println(n + " 是素数!");
        }
    }

Java—程序逻辑控制_第23张图片

3,输出 1000 - 2000 之间所有的闰年

public static void main(String[] args) {
        for (int year = 1000; year < 2000; year++) {
            /*if(year % 100 !=0) {
                if(year % 4 == 0) {
                    System.out.println(year+" 是闰年!");
                }
            }else {
                if(year % 400 == 0) {
                    System.out.println(year+" 是闰年!");
                }
            }*/
            if(year % 100 != 0 && year % 4 == 0 || year % 400 == 0) {
                System.out.println(year+" 是闰年!");
            }
        }
    }

Java—程序逻辑控制_第24张图片

4,输出乘法口诀表

 public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i ; j++) {
                System.out.print(i+"*"+j+"="+i*j+" ");//\t
            }
            System.out.println();
        }
    }

Java—程序逻辑控制_第25张图片

 5,求两个正整数的最大公约数

public static void main(String[] args) {
        int a = 24;
        int b = 18;
        int c = a%b;//24 % 18 = 6
        while (c != 0) {
            a = b;//a = 18
            b = c;//b = 6
            c = a%b;//0
        }
        System.out.println("最大公约数是"+b);
    }

Java—程序逻辑控制_第26张图片

 6,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。

public static void main(String[] args) {
        double sum = 0.0;
        int flg = 1;
        for (int i = 1; i <= 100 ; i++) {
            sum = sum + 1.0/i * flg;
            flg = -flg;
        }
        System.out.println(sum);
    }

Java—程序逻辑控制_第27张图片

你可能感兴趣的:(JavaSE,java,开发语言,后端)