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 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映