当前位置: 首页 > 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模块提供了多种用于回归分析的数据集,这些数据集常…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目&#xff0c;集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...