swift for循环_Swift | 实战一个简单的素数计算器demo

d2fd59f307d5907f0cdda7e3ca636431.png

Swift

实战一个简单的素数计算器demo

本期我们来介绍如何用storyboard来实现一个素数计算器demo,storyboard可以明确地知道界面上的组件与代码的关系,而且比起仅用代码写要方便不少。

3cb6a8bf0edebf32be392945ff42049a.png2c6084a748e6c9208894f99922ce6b25.png

No.1

制作一个简单的界面

制作一个简单的界面

8ca46c3a494e93716b0ed09b63b8e134.png

我们首先要使用storyboard来绘制一个界面,可以使用Label、TextField与Button来完成一个简单界面,可以在的TextField中的placeholder里添加些字,这样可以使用户知道这里应该填些什么,如上所示。

dedb632c89a16154ce7850905a188a7d.png7ee5bea621fcd6841889ab8dab9c76a7.png

No.2

定义函数

定义函数

现在要定义一个判别用户所输入的数字是否是一个素数的函数,定以一个输入一个整型数字,输出一个字符串的isPrime函数。我们都知道,素数是一个大于1的自然数,除了1与其本身外,不能被其他自然数整除。知道了素数的定义后我们可以开始写一个isPrime的函数。

1. 首先先使用一个if来判别是否是大于1的自然数,是的话则进行下一步判断,不是的话则返回该数不是素数的字符串

3fb3474621b62cb3982accf21fcd34fa.png

2. 下一步要使用for循环让其与每一个比其小的自然数求余,用if来判别如果余数是0则说明能被其他数整除,则返回该数不是素数的字符串,如果不是则返回该数是素数的字符串。

423d6612f167f25cbb804a1fc4e0be1c.png74d30ffd895da1587cb893fc5d3b323c.png2c6084a748e6c9208894f99922ce6b25.png

No.3

连接起来

连接起来

f1a144b9352469497e2043caeaf0c6f2.gif

我们现在设计完了界面,也定义了函数,现在将它们连起来。可以将界面上的三个组件TextField、Label、Button分别拖入代码中,并分别起名为,numberInput、displayer、JudgerPrime。

e1ad4ca22fea9caf9bd85ac9abc4b45e.png

1. 并添加一行var number:Int?

6450d5a0653d6e819eb6ef59031c07f5.png

这个number是来接收用户所输入的东西的,那为什么要写一个问号呢?这是因为我们不确定用户是否真的会输入一个整型的数字,用户可能只打了一个空格或者小数、字符串等,所以我们在这里多加了一个“?”。

2. 然后我们要在Button处来执行我的操作,我们先让number获得numberInput的值

7dc66a90ae705200d2a64d25c1d28683.png

3. 我们会发现这里报了错,从中我们可以知道,TextField里的类型是字符串的可选类型,所以我们要先解包再转为整形的数。

16dd922e58efe23b0ef86642afbe3e48.png

但是这仍然不够,如果用户输入的是一个点,或者一个空格,那么number就是空值,会导致我们定义的函数不可用,所以我们要在函数执行前消除这个问题。

4. 我们使用guard number != nil来避免,用return来使其直接结束,不进行后续操作。

626a995332a8caca403155e1d91ea75f.png

5. 这样,用户输入的不是整型的情况就被我们规避了,可以正常地调用刚刚写好的函数了,使用displayer.text = isPrime(number: number)调用我们的函数。

dc3bac68d848802ddb09092832273759.png

6.此时我们还是会发现报错,这是为什么呢?因为number是个可选类型,之前规避了nil的情况,所以在这里的number一定不是空值,可以放心地用“!”解包。

08fd27b6f785f09edb84b2927e929ca6.png

7.最后,我们一个素数计算器就这么实现啦

可以随便试几个数:

05b90f10c14d126fa5e09d4e7853d09f.png750e8450be936e730f7d924e578c79fe.png

怎么玩也玩不坏

257028d1ed3dbd41cb9e1c1f5675f791.png784d123891cc33d1e8d8ab666854db51.png2c6084a748e6c9208894f99922ce6b25.png

No.4

做个简单的对比

这次我又用了纯代码的方式来实现这个素数计算器的功能

4c111b2a536f5a62a20b74984f781c7f.png3170e4694bb0f2bc3d6dd0a690173da4.png

是不是瞬间感觉storyboard简便多了

ac573466eb4fb1b0b67ae228d8ab52bf.png7ee5bea621fcd6841889ab8dab9c76a7.png

那么本期关于素数计算器的实现就介绍到这里啦,我们下期再见~

2c6084a748e6c9208894f99922ce6b25.png

撰稿:Carrot

图文编辑:Carrot

2b01ba67a36901f736c5850df40e7f97.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java文件传输连接方式_Java 学习笔记 网络编程 使用Socket传输文件 CS模式

Socket的简单认识Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点。 Socket是连接运行在网络上的两个程序间的双向通讯端点。Socket通信原理Server服务端的输入流相当于Client客户端的输出…

创建线程的三种方法_Netty源码分析系列之NioEventLoop的创建与启动

前言前三篇文章分别分析了 Netty 服务端 channel 的初始化、注册以及绑定过程的源码,理论上这篇文章应该开始分析新连接接入过程的源码了,但是在看源码的过程中,发现有一个非常重要的组件:NioEventLoop,出现得非常频繁…

java正则表达式匹配xml标签_用正则表达式匹配HTML\XML等文件中的标签

测试用HTML源文件:View Code《完美世界:天界的召唤》缤纷圣诞总动员[ 中华网 1小时前]经过了平安夜和圣诞节,节日的气氛被推到了最高点!《完美世界:天界的召唤》为玩家准备了精彩纷呈的圣诞节活动,而玩家也…

java spring hiberate_Java程序员:Spring Boot和Hibernate一起使用的技巧

Hibernate不需要多介绍,它是Java中最受欢迎的ORM。同样,Spring Boot是功能最强大且易于使用的框架。本文并不是描述一些关于Hibernate或Spring Boot的用法,因为有很多。相反,我们将研究同时使用它们时可能遇到的一些常见错误以及如…

postgresql 查询序列_RazorSQL for Mac(数据库工具查询) v9.0.9

RazorSQL Mac激活版是一款专门为mac用户推出的数据库管理软件,允许您从一个数据库工具查询,更新,导航和管理所有主要数据库!软件特色RazorSQL 是一个非开源的功能非常强大数据库查询工具、SQL的编辑、数据库管理工具。支持通过 JD…

vsm特征提取java_文本特征提取方案汇总

文本特征提取方案汇总文本分析是机器学习算法的主要应用领域。但是,文本分析的原始数据无法直接丢给算法,这些原始数据是一组符号,因为大多数算法期望的输入是固定长度的数值特征向量而不是不同长度的文本文件。一、文本数据的表示模型​ 文本…

脚本启动显示查询频繁被服务器防御_又被CC攻击弄得心有余悸?莫怕!这里教你如何防御...

转自CSDN,博主:一只IT小小鸟。CC攻击原理HTTP Flood 俗称CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,前身名为Fatboy攻击,也是一种常见的网站攻击方法。是针对 Web 服务在第七层协议发起的攻击。攻击者相较其他三层…

java 怎么获取形参名_获得方法形参名称列表 -- 哦也,搞定!!

JAVA获取类的方法的参数名 – 老话题,新方法!!折腾了一天,终于搞定了.测试了nutz所有的类,均读取正常!! 完美读取任何class的变量名信息! 呵呵,当前,前提是编译时含debug信息.无任何依赖,不需要asm,不要其他任何字节码工具,纯标准JDK API实现. 核心代码,仅一个方法,130行,哦也!…

robotframework安装_python3.9.0 + robotframework + selenium3 实例体验

在win10上安装python3.9.0robotframework中我们做了基本的使用robot framework的环境搭建,这一章主要通过一个简单的实例来体验下robot framework的使用方式、运行、报告和日志(非常漂亮的自动化测试报告噢!)。首先我们打开RIDE,快捷键 ctrln…

vmware 搭建k8s无法ping通子节点_一波四折 —— 记一次K8S集群应用故障排查

一波四折——记一次K8S集群应用故障排查Part1 初露端倪一个周四的下午,客户的报障打破了微信群的平静。“我们部署在自建K8S集群上的应用突然无法正常访问了,现在业务受到了影响!”收到客户的报障,我们立刻响应,向客户…

python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo

转自:菜鸟学Python蝙蝠侠作为DC漫画的核心人物之一,一直都受到广大粉丝的喜爱,而笔者作为DC的铁杆粉丝,自然也是老爷(粉丝对蝙蝠侠的昵称)的支持者。今天,笔者就用Python来画一个蝙蝠侠的logo,大概就是下图…

iis7php怎么301重定向,iis7/8设置网站301重定向的方法

准备条件:a、一台装有win2008以上版本的服务器 b、iis启用并且运行正常 c、在网站程序存放目录中单独创建个目录,目录里面留空即可(为了方便区分,目录名称可以设置为站点名称301,例如fcblog_301)1、打开Internet信息服务…

结构体内元素不确定_查漏补缺!高中三年生物最易忽略、易错的30个知识点整理不容错过...

高中生物的知识体系基本上是由大约数十个核心概念为基础构建起来的,这些概念包括细胞、细胞分裂、光合作用、呼吸作用、基因、染色体、遗传、变异、进化、生化系统等等,今天学姐来帮助你们整理一下高中三年中最容易忽略,也是最容易出错的30个…

基于单片机超声波测距系统的设计_一种基于UWB技术实现的测距防撞系统

叉车被广泛应用于工厂车间、仓库、流通中心和配送中心等,大大提高了对成件托盘货物进行装卸、堆垛和短距离运输作业的运输效率,几乎是所有车间必不可少的运输工具。但目前,简单方便的同时,安全事故(剐蹭、碰撞、碾压、撞车等)却也…

vb.net中递归退到最外层_数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的…

java实现条形图,JavaFX条形图

本文概述通常, 条形图可以定义为使用矩形条形表示数据的图。条的长度表示绘制在其中一根轴上的精确数值数据值。矩形条可以在图表上水平或垂直绘制。在下图中, 条形图显示了工程各个分支中的学生人数。 X轴是类别轴, 显示了不同的分支, 而Y轴是数字轴, 显示了特定分支中的学生人…

php excel 垂直居中,完美实现文字图片水平垂直居中

垂直居中是一个历史悠久的大问题,要做到兼容所有浏览器少不了要花点时间,网上也流传了很多解决方案,但没发现比我现在用的方案更完美,至少在我的项目是如此。项目中要用到垂直居中而碰到兼容性问题的,一般都是以下几种…

cd短是什么意思_每日命令|pwd、cd

01 命令简介上回说到《每日命令 | ls》,今天我们来说一说pwd命令和cd命令。pwd命令——返回当前工作目录名称。cd命令——改变工作目录。什么是工作目录?举个例子:我在北京上班,那我的工作地点就是北京;后来我到上海上…

sql 查询表结构_SQL查询语句的完整结构解析

SELECT语句完整的句法模板:SELECT [DISTINCT] FROM [ JOIN ON ][WHERE ][GROUP BY [HAVING ]][ORDER BY ,...]上述句法模版中的[ ]表示该部分可选。SELECT整个语句的执行过程为:(1) 读取FORM子句中表、视图的数据。(2) 存在连接表时&…

基于matlab实现的云模型计算隶属度,基于MATLAB实现的云模型计算隶属度

”云”或者’云滴‘是云模型的基本单元,所谓云是指在其论域上的一个分布,可以用联合概率的形式(x, u)来表示云模型用三个数据来表示其特征期望:云滴在论域空间分布的期望,一般用符号Εx表示。熵:不确定程度…