java学习之路-程序逻辑控制

2024-03-16 16:44

本文主要是介绍java学习之路-程序逻辑控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.分支结构

1.1 if语句

栗子

判断奇数还是偶数

判断一个年份是否为闰年

1.2switch语句

栗子

2. 循环结构

2.1while 循环

栗子

2.2break和continue

break

continue

2.3for循环

基本语法

栗子

2.4 do while 循环

3.输入输出

3.1输出

 3.2从键盘输入

栗子

3.3猜数字游戏实现

4.练习

4.1 判定一个数字是否是素数

4.2求两个数的最大公约数

4.3求水仙花数

4.4求二进制的个数


1.分支结构

1.1 if语句

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

如果布尔表达式结果为true,执行if中的语句,否则不执行。

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

如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。

栗子

判断奇数还是偶数

 int num = 10;if (num % 2 == 0) {System.out.println("num 是偶数");} else {System.out.println("num 是奇数");}

判断一个年份是否为闰年

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

1.2switch语句

基本语法

 switch(表达式){case 常量值1:{语句1;[break;]}case 常量值2:{语句2;[break;]}default:{内容都不满足时执行语句;[break;]}       
}

执行流程:

1. 先计算表达式的值

2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束

3. 当表达式的值没有与所列项匹配时,执行default

栗子

 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;}

【注意事项】

多个case后的常量值不可以重复

switch的括号内只能是以下类型的表达式:

         基本类型:byte、char、short、int,注意不能是long类型

        引用类型:String常量串、枚举类型

2. 循环结构

2.1while 循环

语法格式

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

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

栗子

        //分别计算100内所有奇数、偶数的和int i = 1;int sumodd = 0;int sumeven = 0;while(i <= 100){//首先判断是奇数//然后进行累加求和。if(i % 2 == 0)//偶数对二求余必为0{sumeven += i;}else{sumodd += i;}i ++;//每轮i都要进行++}//求和完成,打印数据System.out.println("偶数和 = "+ sumeven);System.out.println("奇数和 = "+ sumodd);

注意事项

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

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

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

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

2.2break和continue

break

功能是让循环提前结束.

        //区分break和continueint j = 1;while(j <= 5){if(j == 2){break;//当j=2时候,}System.out.println(j); //这里只会输出1就结束了。}

continue

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

        int j = 1;while(j <= 5){if(j == 2){continue;//会进入死循环,永远停留在j=2}System.out.println(j);}

2.3for循环

基本语法

for(表达式①;布尔表达式②;表达式③){表达式④;}

表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次

表达式2: 循环条件,满则循环继续,否则循环结束

表达式3: 循环变量更新方式

栗子

计算 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);

2.4 do while 循环

【基本语法】

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

先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。

do while 循环最后的分号不要忘记

3.输入输出

3.1输出

基本语法

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

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

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

System.out.println("hello world");int x = 10;System.out.printf("x = %d\n", x)

 3.2从键盘输入

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

 import java.util.Scanner;  // 需要导入 util 包Scanner sc = new Scanner(System.in);sc.close(); // 注意, 要记得调用关闭方法

栗子

       import java.util.Scanner;  // 需要导入 util 包Scanner sc = new Scanner(System.in);//接下来就可以使用输入了/* System.out.println("请输入你的id");String name = scan.next();//next只读有效的字符,遇到空格、tab、enter键,那么就会停止结束。System.out.println(name);*///输入字符串/*ystem.out.println("请输入你的id");String name = scan.nextLine();//nextLine 输入字符串,遇到enter才结束System.out.println(name);*///输入整型/*System.out.println("请输入你的年龄");int ax = scan.nextInt();//只会录入空格前的,遇到空格、tab、enter键就停止了System.out.println(ax);//也可以进行循环输入//循环结束用ctrl+dwhile(scan.hasNextInt())//就是如果有数字的输入就不会停止//想停止两方法,ctrl+d,还有输入其他字符,不是数字的内容。{int age = scan.nextInt();System.out.println(age);}scan.close();//这个就是类似于文件操作的关闭,有打开那就有关闭。*/

3.3猜数字游戏实现

游戏规则:

系统自动生成一个随机整数(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();}}

4.练习

4.1 判定一个数字是否是素数

有两方法
其一,就是通过循环一个数一个数的对x求余,当余数等于0,那么就不是素数,只有大于开根号数时候才是
比如16 ,可以写成1*16 2*8 4*4 ,其中2小于16开根号,那么就不是素数
        // i = 2; //从二开始,因为每个数都能被1整除,所以1毫无意义for(i = 2 ;i <= Math.sqrt(num) ; i++ ){if(num % i == 0 ){break;//不是素数,1和2不是素数}}if( i > Math.sqrt(num)){ //如果i大于Math.sqrt(num),那么就是素数System.out.println(num + "是素数");}

4.2求两个数的最大公约数

        //就是用转转相除法比如 18 和 24 最大公约数就是6//过程,24 % 18 = 6,然后下一步就是进行判断,如果18 % 6 = 0,那么6就是最大公约数int a = scan.nextInt();int b = scan.nextInt();int c = a % b;while( c != 0){a = b;//这里是防止a<b吧b = c;c = a % b;}System.out.println(b);

4.3求水仙花数

        //栗子 i= 153 = 1^3+5^3+3^3//先求这个数是几位数//然后再次循环求出这个数的每一位数取出来/*for(int i = 1 ; i <= 999999 ;i ++){int count = 0;int tmp = i;while(tmp != 0){count ++;//一次除去10,每次去掉一位数tmp = tmp / 10;}//计算完再进行重新赋值tmp = i ;int sum = 0;//用于求和while(tmp != 0){sum+=Math.pow(tmp % 10,count);//这个函数就是传两个参数,然后进行相乘,           (2,3)=2*3tmp /= 10;//每次去掉最后一位}if(sum == i){System.out.println(i);}}

4.4求二进制的个数

        //求二进制的个数int ax =scan.nextInt();int count = 0;//用来记录二进制中1的个数//用求二进制的方法来求1的个数;对2取余,余1的话就说明二进制中有个1,然后除以二,在取余,直到除2之后为0while (ax > 0){if (ax%2==1){count++;ax /= 2;}else{ax /= 2;}}System.out.println(count);

这篇关于java学习之路-程序逻辑控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816082

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows