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

相关文章

Spring Security常见问题及解决方案

《SpringSecurity常见问题及解决方案》SpringSecurity是Spring生态的安全框架,提供认证、授权及攻击防护,支持JWT、OAuth2集成,适用于保护Spring应用,需配置... 目录Spring Security 简介Spring Security 核心概念1. ​Securit

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避