当前位置: 首页 > news >正文

Java —— 程序逻辑控制

目录

1. 顺序结构

2. 分支结构

2.1 if 语句

2.1.1 语法格式1

2.1.2 语法格式2

2.1.3 语法格式3

2.2 switch 语句

3. 循环结构

3.1 while循环

3.2 break与continue

3.3 for循环

4. 输入输出

4.1 输出到控制台

格式化字符串

4.2 从键盘输入

5. 练习


和C语言类似地, Java的程序逻辑控制也分为 顺序结构, 分支结构, 循环结构.

1. 顺序结构

顺序结构即 按照代码书写的顺序一行一行执行.

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
运行结果:
aaa
bbb
ccc

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

System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
运行结果:
aaa
ccc
bbb

2. 分支结构

2.1 if 语句

2.1.1 语法格式1

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

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

2.1.2 语法格式2

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

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

2.1.3 语法格式3

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

表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3.

2.2 switch 语句

在C语言中也有了解过switch的有关语法, 那么在Java中switch的使用也是几乎一样的.
int a = 2;
switch (a) {case 2:System.out.println("two");break;case 1:System.out.println("one");break;default:System.out.println("没有匹配!");break;
}

执行流程:

1. 先计算switch后()中表达式的值

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

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

【注意事项】

  • 多个case后的常量值不可以重复
  • switch的括号内只能是以下类型的表达式:
    • 基本类型:byte、char、short、int,注意不能是long类型
    • 引用类型:String常量串、枚举类型
    • 不可以是long, float, double, boolean
  • break 不要遗漏, 否则会失去 "多分支选择" 的效果
int day = 1;
switch(day) {case 1:System.out.println("星期一");// break;case 2:System.out.println("星期二");break;
}
运行结果:
星期一
星期二
  • switch 不能表达复杂的条件
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 10 && num < 20) {System.out.println("hehe");    
}
  • switch 虽然支持嵌套, 但是很丑,一般不推荐~

3. 循环结构

Java中的循环结构和C语言一样, 也是三个.
for, while, do while.
从使用频率上, while会比for循环使用的更多一点.

3.1 while循环

//语法格式:
while(布尔表达式){//..
}
// 打印1-10之间的所有数字, 并求和
int i = 1;
int sum = 0;
while (i <= 10) {sum += i;i++;
}
System.out.println(sum);
//1-100的和
//1-100的奇数和
//1-100的偶数和
int i = 1;
int sum = 0;
int sumOdd = 0;
int sumEve = 0;
while (i <= 100) {if (i % 2 == 0) {sumEve += i;} else {sumOdd += i;}sum += i;i++;
}
System.out.println(sum);
System.out.println(sumOdd);
System.out.println(sumEve);
//计算5的阶乘
int i = 1;
int ret = 1;
while (i <= 5) {ret *= i;i++;
}
System.out.println(ret);
//计算 1! + 2! + 3! + 4! + 5!
int ret2 = 0;
int n = 1;
while (n <= 5) {int i = 1;int ret = 1;while (i <= n) {ret *= i;i++;}ret2 += ret;n++;
}
System.out.println(ret2);
//死循环
int a = 1;
while (true) {System.out.println("fasfa");
}

3.2 break与continue

break: 直接跳出循环, 即结束循环.
continue: 结束 本趟循环.
//找到1-100之间
//既能被3整除, 又能被5整除的所有数字.
int i = 1;
while (i <= 100) {if (i % 15 != 0) {i++;continue;}System.out.println(i);i++;
}

3.3 for循环

//基本语法
for(表达式①;布尔表达式②;表达式③){表达式④;
}
  • 表达式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 = 1;
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);

4. 输入输出

接下来我们来介绍一下Java中的输入输出.
这一部分并不算特别重要, 但是在后续写代码的过程中有可能会用到.

4.1 输出到控制台

有三种方式:

System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
  • println 输出的内容自带 \n, print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

格式化字符串

转换符

类型

举例

d

十进制整数

("%d", 100)

100

x

十六进制整数

("%x", 100)

64

o

八进制整数

("%o", 100)

144

f

定点浮点数

("%f", 100f)

100.000000

e

指数浮点数

("%e", 100f)

1.000000e+02

g

通用浮点数

("%g", 100f)

100.000

a

十六进制浮点数

("%a", 100)

0x1.9p6

s

字符串

("%s", 100)

100

c

字符

("%c", ‘1’)

1

b

布尔值

("%b", 100)

true

h

散列码

("%h", 100)

64

%

百分号

("%.2f%%", 2/7f)

0.29%

4.2 从键盘输入

在我们找工作的笔试过程中经常会需要我们自己来处理输入输出.

Java中的输入需要工具类Scanner, 也就是要导入util包java.util.Scanner

import java.util.Scanner; // 需要导入 util 包

类比代码int a = 10;通过类型定义变量.

Scanner scan = new Scanner(System.in);
System.in意为从键盘获取输入值.

那么接下来我们就可以通过scan这个变量通过.找到这里面要用的方法.

//比如
int age = sc.nextInt();

此时代码执行就会要求读一个整数.


完整代码如下:

public class Test {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("输入你的年龄:");int age = scan.nextInt();System.out.println("年龄:" + age);sc.close(); // 注意, 要记得调用关闭方法}
}


使用 Scanner 循环读取 N 个数字,并求取其平均值

Scanner sc = new Scanner(System.in);
int sum = 0;
int num = 0;
while (sc.hasNextInt()) {int tmp = sc.nextInt();sum += tmp;num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
执行结果:
10
40.0
50.5
^Z
sum = 150.5
avg = 30.1

注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d).

5. 练习

1. 求一个整数,在内存当中存储时,二进制1的个数。

让该整数的每一位和1进行按位与操作, 而要让每一位都能和1按位与, 只需使用右移操作符即可.

int n = -1;
int count = 0;
for (int i = 0; i < 32; i++) {if (((n >> i) & 1) != 0) {count++;}
}
System.out.println(count);
注意: 按照以上代码完成题目, 会有一个小问题.
不管是什么数字, 都得移动31次.
从这个角度来看, 是没有必要的. 比如判断数字1它本身的二进制位1的个数, 在第一位按位与, 接下来右移之后, 会发现后面的都是0了, 就多了很多不必要的操作.
所以就有了第二种写法.
int n = -1;
int count = 0;
while (n != 0) {if ((n & 1) != 0) {count++;}n = n >>> 1;
}
System.out.println(count);
接下来还有一个在算法层次的对代码的优化.
int n = -1;
int count = 0;
while (n != 0) {n = n & (n - 1);//每次 & 时都会让二进制位少一个1count++;
}
System.out.println(count);

2. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

1. 从上述表达式可以分析出: 该表达式主要由100项,基数项为正,偶数项为负
2. 设置一个循环从1~100,给出表达式中的每一项:1.0/i { 注意此处不能使用1,否则结果全部为0 }
然后使用flag标记控制奇偶项,奇数项为正,偶数项为负
然后将所有的项相加即可
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);

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

    public static void main(String[] args) {for (int i = 1; i <= 999999; i++) {// 1. 算是几位数 -> 使用 count 存储int count = 0;int tmp = i;    // 为了求 i 是几位数, 所以让 tmp 来辅助求位数, 而不用 iint sum = 0;while (tmp != 0) {tmp /= 10;count++;}//count里面就存储了当前数字i是几位数// 2. 求每一位数字是几// 3. 把每一位数字是几, 位数的次幂算出来, 求和tmp = i;while (tmp != 0) {sum += Math.pow(tmp % 10, count);tmp /= 10;}//sum就存储了和if (sum == i) {System.out.println(i);}}}

4. 打印 X 图形

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。针对每行输入,输出用“*”组成的X形图案。

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);while(scan.hasNextInt()) {int n = scan.nextInt();for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {if ((i == j) || (i + j ==  n - 1)) {System.out.print("*");} else {System.out.print(" ");}}System.out.println();}}}
}

5. 乘法口诀表: 输出n*n的乘法口诀表,n由用户输入。

for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(i + "*" + j + "=" + i * j + " ");}System.out.println();
}

6. 输出一个整数的每一位,如:123的每一位是3,2,1

int n = 123;
while (n != 0) {System.out.println(n % 10);n /= 10;
}

7. 模拟登录: 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序

Scanner scanner = new Scanner(System.in);
int count = 3;
while (count != 0) {System.out.println("请输入你的密码,共有" + count + "次机会!");String pass = scanner.nextLine();//if(pass == "123") {//equalsif (pass.equals("123")) {//equalsSystem.out.println("登录成功!");break;} else {System.out.println("登录失败!");}count--;
}

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

int n = 7;
for (int i = 31; i >= 1; i -= 2) {System.out.print(((n >> i) & 1) + " ");
}//偶数
System.out.println();
for (int i = 30; i >= 0; i -= 2) {System.out.print(((n >> i) & 1) + " ");
}

9. 判定一个数字是否是素数

int n = 9;
int i = 2;
for (; i < n; i++) {if (n % i == 0) {System.out.println("不是素数!");break;}
}
if (i == n) {System.out.println("是素数!");
}
一个大于 n/2 的因数必然会有一个小于或等于 n/2 的对应因数。这是因为这个因数可以表示为 n 的另一个因数和 n/2 的乘积,我们可以将 n 分为两个相等的部分,其中一部分是小于或等于 n/2 的因数的倍数
int n = 11;
int i = 2;
for (; i <= n / 2; i++) {if (n % i == 0) {System.out.println("不是素数!");break;}
}
if (i > n / 2) {System.out.println("是素数!");
}
int n = 11;
int i = 2;
for (; i <= Math.sqrt(n); i++) {if (n % i == 0) {System.out.println("不是素数!");break;}
}
if (i > Math.sqrt(n)) {System.out.println("是素数!");
}

10. 打印 1 - 100 之间所有的素数

for (int n = 1; n <= 100; n++) {int i = 2;for (; i <= Math.sqrt(n); i++) {if (n % i == 0) {break;}}if (i > Math.sqrt(n)) {System.out.println(n + "是素数!");}
}

相关文章:

Java —— 程序逻辑控制

目录 1. 顺序结构 2. 分支结构 2.1 if 语句 2.1.1 语法格式1 2.1.2 语法格式2 2.1.3 语法格式3 2.2 switch 语句 3. 循环结构 3.1 while循环 3.2 break与continue 3.3 for循环 4. 输入输出 4.1 输出到控制台 格式化字符串 4.2 从键盘输入 5. 练习 和C语言类似地, Java的程序逻辑…...

I - Bob vs ATM(博弈论)

传送门&#xff1a;nefu_10-18 - Virtual Judge (vjudge.net) 思路&#xff1a; nim游戏的变形。 &#xff08;&#xff08;&#xff09;&#xff09;相当于在一堆n个石子中取任意个&#xff0c;sg&#xff08;n&#xff09;n; ((()))(())(),相当于可以在3堆石子分别为3&am…...

请解释一下 CSS3 的 Flexbox(弹性盒布局模型), 以及适用场景?

解析: CSS3的Flexbox&#xff08;弹性盒布局模型&#xff09;是一种强大的布局技术&#xff0c;用于创建灵活和响应式的布局。它解决了传统CSS布局模型在垂直和水平居中、等高列、自适应宽度等方面的一些挑战&#xff0c;使开发人员能够更轻松地构建各种复杂的布局。在下面的详…...

MYSQL 根据唯一索引键更新死锁问题

mysql 死锁问题及死锁权重分析 问题发生过程&#xff1a;1、生产发现死锁一次 语句为sql1:UPDATE table set data ‘123’ where business_no ABC; 该行数据的id1&#xff0c; business_no ABC tablbe 字段 id&#xff1a;主键 business_no为唯一索引字段&#xff0c;其…...

Appium+python+unittest搭建UI自动化框架!

阅读本小节&#xff0c;需要读者具备如下前提条件&#xff1a; 1. 掌握一种编程语言基础&#xff0c;如java、python等。 2. 掌握一种单元测试框架&#xff0c;如java语言的testng框架、python的unittest框架。 3. 掌握目前主流的UI测试框架&#xff0c;移动端APP测试框架Appiu…...

使用kubekey部署k8s集群和kubesphere、在已有k8s集群上部署kubesphere

目录 前言什么是kubekey&#xff08;简称kk&#xff09;单节点上安装 kubesphere&#xff08;all in one 快速熟悉kubesphere&#xff09;部署 kubernetes和和kubesphere 多节点安装部署 kubernetes和和kubesphere 离线安装k8s v1.22.17和kubesphere v3.3.2联网-在已有k8s集群上…...

React useMemo useCallback useEffect 的区别(保姆级教程)

因个人工作原因&#xff0c;在2023年学起了React TS 这个 “前端大佬” “高阶玩家” 标配的技术栈&#xff0c;一套学习下来个人总结就是&#xff1a;React真特么难用&#xff01;传染病式的渲染逻辑是真让人难受&#xff01;维护之前的代码就是深渊&#xff01;难怪React项目…...

网络安全中的人工智能:优点、缺点、机遇和危险

2022 年秋天&#xff0c;人工智能在商业领域爆发&#xff0c;引起了轰动&#xff0c;不久之后&#xff0c;似乎每个人都发现了 ChatGPT 和 DALL-E 等生成式 AI 系统的新的创新用途。世界各地的企业开始呼吁将其集成到他们的产品中&#xff0c;并寻找使用它来提高组织效率的方法…...

36 机器学习(四):异常值检测|线性回归|逻辑回归|聚类算法|集成学习

文章目录 异常值检测箱线图z-score 保存模型 与 使用模型回归的性能评估线性回归正规方程的线性回归梯度下降的线性回归原理介绍L1 和 L2 正则化的介绍api介绍------LinearRegressionapi介绍------SGDRegressor 岭回归 和 Lasso 回归 逻辑回归基本使用原理介绍正向原理介绍损失…...

maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories

前言 略 说明 新设备上安装了mvn 3.8.5&#xff0c;编译新项目出错&#xff1a; [ERROR] Non-resolvable parent POM for com.admin.project:1.0: Could not transfer artifact com.extend.parent:pom:1.6.9 from/to maven-default-http-blocker (http://0.0.0.0/): Bl…...

盒式交换机堆叠配置

目录 1.配置环形拓扑堆叠 2.设备组建堆叠 3.设备组件堆叠 堆叠 istack&#xff0c;是指将多台支持堆叠特性的交换机设备组合在一起&#xff0c;从逻辑上组合成一台交换设备。如图所示&#xff0c;SwitchA与 SwitchB 通过堆叠线缆连接后组成堆叠 istack&#xff0c;对于上游和…...

openEuler 服务器安装 JumpServer (all-in-one 模式)

openEuler 服务器安装 JumpServer JumpServer 简介什么是 JumpServer &#xff1f;JumpServer 的各种类型资产JumpServer 产品特色或优势JumpServer 符合 4A 规范 JumpServer 系统架构应用架构组件说明 JumpServer 安装部署环境要求网络端口网络端口列表防火墙常用命令 在线脚本…...

vue3后台管理系统之路由守卫

下载进度条 pnpm install nprogress //路由鉴权:鉴权,项目当中路由能不能被的权限的设置(某一个路由什么条件下可以访问、什么条件下不可以访问) import router from /router import setting from ./setting // eslint-disable-next-line typescript-eslint/ban-ts-comment /…...

微信小程序连接数据库与WXS的使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…...

django 项目基本配置

项目工程初始化 安装框架 pip install django使用命令创建项目 django-admin startproject 项目名称效果 根目录创建apps用以放置所有包 切换至apps目录创建子应用 python ../manage.py startapp usermuxi_shop_back/settings.py # Build paths inside the project lik…...

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)

前言 1. 学习视频&#xff1a; 尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第二阶段&#xff1a;Java面向对象编程 6.面向对象编程&#xff08;基础&#xff09; 7.面向对象编程&…...

吉利高端品牌领克汽车携手体验家,重塑智能创新的汽车服务体验

浙江吉利控股集团&#xff08;以下简称“吉利集团”&#xff09;始建于1986年&#xff0c;1997年进入汽车行业&#xff0c;一直专注实业&#xff0c;专注技术创新和人才培养&#xff0c;坚定不移地推动企业转型升级和可持续发展。现资产总值超5100亿元&#xff0c;员工总数超过…...

短视频矩阵系统源码(搭建)

短视频矩阵源码的开发路径分享如下&#xff1a; 1、首先&#xff0c;确定项目需求和功能&#xff0c;包括用户上传、编辑、播放等。 2、其次&#xff0c;搭建开发环境&#xff0c;选择合适的开发工具和框架。 3、然后&#xff0c;进行项目架构设计和数据库设计&#xff0c;确…...

k8s 实战 常见异常事件 event 及解决方案分享

k8s 实战 常见异常事件 event 及解决方案分享 集群相关 Coredns容器或local-dns容器 重启集群中的coredns组件发生重启(重新创建)&#xff0c;一般是由于coredns组件压力较大导致oom&#xff0c;请检查业务是否异常&#xff0c;是否存在应用容器无法解析域名的异常。如果是l…...

【Python机器学习】sklearn.datasets回归任务数据集

为什么回归分析在数据科学中如此重要,而sklearn.datasets如何助力这一过程? 回归分析是数据科学中不可或缺的一部分,用于预测或解释数值型目标变量(因变量)和一个或多个预测变量(自变量)之间的关系。sklearn.datasets模块提供了多种用于回归分析的数据集,这些数据集常…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...