Java程序逻辑控制

简介: Java程序逻辑控制

Java程序逻辑控制

大家好,我是晓星航。今天为大家带来的是程序逻辑控制相关知识点的讲解!😀

1. 顺序结构

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

即程序的执行和代码的书写顺序有关。

2.分支结构

2.1 if 语句

基本格式:

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

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

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

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

public class TestDemo1 {
    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");
        }
    }
}

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

public class TestDemo1 {
    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("不是闰年");
            }
        }
    }
}

升级版本:

public class TestDemo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        if(n%4==0&&n%100!=0||n%400==0){
            System.out.println(n+"年是闰年");
        }
        else{
            System.out.println(n+"年不是闰年");
        }
    }
}

2.2 switch 语句

基本语法:

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

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

import java.util.Scanner;
public class TestDemo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        switch(n){
            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;
        }
    }
}

注意事项

1 break 不要遗漏, 否则会失去 “多分支选择” 的效果 我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果.

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

2 switch 中的值只能是 整数|枚举|字符|字符串 long float double boolean 这四种不可作为switch参数

3 switch 不能表达复杂的条件

4 switch 虽然支持嵌套, 但是很丑~

3.循环结构

3.1 while 循环

基本语法格式:

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

循环条件为 true, 则执行循环语句; 否则结束循环

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

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

代码示例2: 计算 n 的阶乘 以及1到n的阶乘的和 换行分别打印:

import java.util.Scanner;
public class TestDemo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);//给scanner赋值输入量
        int n = scanner.nextInt();//对n进行输入
        int i = 1;
        int num = 1;
        int sum = 0;
        while(i<=n){
            num *= i;
            i++;
            sum += num;
        }
        System.out.println(num);
        System.out.println(sum);
    }
}

注意事项

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

3.2 break

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

执行到 break 就会让循环结束.

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

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

3.3 continue

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

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

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

注意:

1 break 和 continue 必须在循环中(特例break可以再switch中)

3.4 for 循环

基本语法:

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

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

public class TestDemo1 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

代码示例2: 计算 n 的阶乘 以及1到n的阶乘的和 换行分别打印:

import java.util.Scanner;
public class TestDemo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i = 0;
        int num = 1;//作为计算阶乘的第一个数 乘数等于本身 所以为1
        int sum = 0;//作为计算阶乘的和的第一个数 所以为0
        for (i = 1; i <= n; i++){
            num *= i;
            sum += num;
        }
        System.out.println(num);
        System.out.println(sum);
    }
}

3.5 do while 循环(选学)

基本语法:

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

注意事项:

  1. 1.do while 循环最后的分号不要忘记
  2. 2.一般 do while 很少用到, 更推荐使用 for 和 while.

4.输入输出

4.1 输出到控制台

基本语法:

System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出

注意:

println 输出的内容自带 \n, print 不带 \n

printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

格式化字符串:

4.2 从键盘输入

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

import java.util.Scanner;
public class TestDemo1 {
    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(); // 注意, 要记得调用关闭方法
    }
}

 

5.猜数字游戏

import java.util.Random;
import java.util.Scanner;
public class TestDemo1 {
    public static void main(String[] args) {
        Random random = new Random();
        int rand = random.nextInt(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 {
                System.out.println("猜大了");
            }
        }
    }
}

6补充知识点:

6.1Java输入整形:

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();

这里还要包含一个头文件:

import java.util.Scanner;

这里我们输入sca直接回车,idea会自动帮我们加上这个头文件。如果忘记了可以鼠标点一下Scanner,然后alt+回车也可以帮助我们自动加上这个头文件

6.2Java输入字符串:

Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();

这里还要包含一个头文件:

import java.util.Scanner;

这里我们输入sca直接回车,idea会自动帮我们加上这个头文件。如果忘记了可以鼠标点一下Scanner,然后alt+回车也可以帮助我们自动加上这个头文件

这里我们也可以用String str = scanner.next();来读字符串 但它遇到空格会读取结束

而String str = scanner.nextLine();遇到空格不会结束 所以我们读取字符串一般用String str = scanner.nextLine();

6.3关于调试

6.3.1键位的分布

6.3.2调试操作步骤

先设置断点(鼠标右键点击即可) 还可设置条件断点 鼠标右键设置一个断点再右键点击一下设置条件 例如我们想把n直接变为99开始调试 则为:

再点击小瓢虫(Shift+F9)进行调试

直接一行一行调试:F8

跳入函数一行一行调试:F7

步出:Shift+F8

中止:Ctrl+F2

7. 作业

1.根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上) (用if else if else 输出结果)

2.判定一个数字是否是素数(n % i == 0为判断是否为素数的条件 除了1和本身其余数都不是自己的公因数 这里采用根号n可以减少计算机的计算量)

3.打印 1 - 100 之间所有的素数(n % i == 0为判断是否为素数的条件 除了1和本身其余数都不是自己的公因数 这里采用根号n可以减少计算机的计算量)

4.输出 1000 - 2000 之间所有的闰年 (能被4整除&&能被400整除||不能被100整除)

5.输出乘法口诀表(两次for循环)

6.求两个正整数的最大公约数(最小公倍数=(a*b)/最大公约数)

7.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。(sum = sum + 1/i * flg; flg = -flg;前者为计算所有的分数 后者为变化符号为加一次减一次)

8.编写程序数一下 1到 100 的所有整数中出现多少个数字9。(i % 10 == 9 判断个位上是否出现9 i / 10 == 9 判断十位上是否出现9 然后用count来计数即可)

9.求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。)

10.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序(用equals来比较字符串是否相等)

11.写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1

12.获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。

13.输出一个整数的每一位.(用%10 %100以及/10 /100来取出每一位 %取小位 /取大位)

14.完成猜数字游戏(详细解答见目录5. 猜数字游戏)

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手三连一波,你的每一次鼓励都是作者创作的动力哦!😘

目录
相关文章
|
1月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
2月前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
29天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
43 2
|
1月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
36 1
|
1月前
|
Java C语言
【一步一步了解Java系列】:探索Java逻辑控制
【一步一步了解Java系列】:探索Java逻辑控制
21 1
|
2月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
42 5
|
2月前
|
Java 编译器 数据库连接
探索Java中的异常处理:提升程序的鲁棒性
【9月更文挑战第25天】在Java的世界里,异常是那些不请自来、令人头疼的“客人”。它们悄无声息地潜入我们的代码,一旦出现,便可能导致程序崩溃或行为异常。但是,如果能够妥善管理这些异常,我们就能将潜在的灾难转变为增强程序鲁棒性和用户体验的机会。本文将通过深入浅出的方式,带领读者理解Java异常处理的重要性,并提供实用的策略来优雅地处理这些意外情况。让我们一起学习如何在Java中捕捉、处理和预防异常,确保我们的程序即使在面对不可预见的错误时也能保持稳健运行。
|
2月前
|
Java
java基础(1)逻辑控制if、switch
本文继续介绍了Java中的基础逻辑控制语句,包括if-else语句和switch语句。文章通过示例代码展示了if-else语句如何根据条件判断执行不同的代码块,以及switch语句如何根据变量的值执行不同的case分支。还提供了一个使用Scanner类从键盘获取输入,并根据输入的数字输出对应的星期日的示例。最后提到了如何在IDEA中格式化代码。
29 2
|
1月前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
27 0