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

scala内建控制结构

一、条件表达式

(一)语法格式

 - if (条件)1 else2

(二)执行情况

  • 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类型,否则就是Any类型
  • Scala的条件表达式有点类似于Java的条件运算符

(三)案例演示

任务1、根据输入值的不同进行判断

在这里插入图片描述
在这里插入图片描述

任务2、编写Scala程序,判断奇偶性

  • 打开Scala项目ScalaDemo,创建net.huawei.day02包,在包里创建Example01对象
package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result =  if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}

在这里插入图片描述
在这里插入图片描述

二、块表达式

案例演示

在这里插入图片描述
在这里插入图片描述

三、for循环

(一)单重for循环

  • 案例演示
    在这里插入图片描述

任务1:输出1到10

  • 两种方式实现,一种使用Range类,一种使用to运算符
    在这里插入图片描述

任务2、遍历字符串,输出每个字符

  • 方法一、按索引取字符串的每个字符(传统for循环)
    在这里插入图片描述
  • 方法二:将字符串看作一个由多个字符组成的集合(增强for循环)
    在这里插入图片描述

任务3、计算 1 + 2 + 3 + … + 100

  • 注意sum必须定义为var型变量
    在这里插入图片描述
  • 利用集合的归并方法来求和最简单
    在这里插入图片描述

任务4、输出列表内的偶数(过滤)

在这里插入图片描述

任务5、输出全部两位素数

for (n <- 10 to 100; if !(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0))  print(n.toString + " ")

在这里插入图片描述

(二)嵌套for循环

案例演示

任务1、打印九九表

在这里插入图片描述

package net.gxf.day02/*** 功能:双重循环打印九九表* 作者:gxg* 日期:2023年02月22日*/
object Example02 {def main(args: Array[String]): Unit = {for (i <- 1 to 9) {for (j <- 1 to i) {print(i.toString + "×" + j + "=" + (i * j) + "\t")}println()}}
}

方法一、采用双重循环来实现

在这里插入图片描述

方法二、采用单重循环来实现

在这里插入图片描述

package net.gxf.day02/*** 功能:单重循环打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example03 {def main(args: Array[String]): Unit = {for (i <- 1 to 9; j <- 1 to i) {print(i.toString + "×" + j + "=" + (i * j) + "\t")if (j == i) println()}}
}

在这里插入图片描述

方法三、采用单重循环与流间变量绑定来实现

在这里插入图片描述

package net.gxf.day02/*** 功能:单重循环与流间变量绑定打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example04 {def main(args: Array[String]): Unit = {for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t") {print(i.toString + "×" + j + "=" + (i * j) + sep)}}
}

在这里插入图片描述

方法四、采用单重循环、流间变量与yield来实现

在这里插入图片描述

package net.gxf.day02/*** 功能:采用单重循环、流间变量与yield打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example05 {def main(args: Array[String]): Unit = {val list = for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t")yield i.toString + "×" + j + "=" + (i * j) + seplist.foreach(print)}
}

在这里插入图片描述

四、条件循环

(一)while循环

任务1、计算1+ 2 + 3 + … + 100

在这里插入图片描述

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example10 {def main(args: Array[String]): Unit = {var sum = 0var i = 1while (i <= 100) {sum = sum + ii = i + 1}println("1 + 2 + 3 + ... + 100 = " + sum)}
}

在这里插入图片描述

  • 采用函数式风格来写代码,递归函数来实现求和,注意:此处sum是常量

在这里插入图片描述

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example10_ {def mx(n: Int, sum: Int): Int = {if (n > 0) mx(n - 1, sum + n) else sum}def main(args: Array[String]): Unit = {println("1 + 2 + 3 + ... + 100 = " + mx(100, 0))}
}

在这里插入图片描述

任务2、打印全部水仙花数

在这里插入图片描述

package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result =  if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}

在这里插入图片描述

(二)do while循环

任务:计算1+ 2 + 3 + … + 100

在这里插入图片描述

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example12 {def main(args: Array[String]): Unit = {var sum = 0var i = 1do {sum = sum + ii = i + 1} while (i <= 100)println("1 + 2 + 3 + ... + 100 = " + sum)}
}

在这里插入图片描述

五、异常处理

任务:演示try-catch-finally

  • try-catch-finally是有返回值的:如果没有异常就是try语句的返回值,如果有异常就是catch语句的返回值。注意不会是finally的返回值,finally即使有返回值,也会被抛弃,这点和Java是不同的。

在这里插入图片描述
在这里插入图片描述

六、match结构

案例演示

在这里插入图片描述

package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result =  if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、变量作用域

(一)Java变量作用域

  • 1、内部能访问外部

在这里插入图片描述
在这里插入图片描述

  • 2、外部不能看内部
    在这里插入图片描述

(二)Scala变量作用域

  • 1、内部不能访问外部
  • 在这里插入图片描述
package net.gxf.day02/*** 功能:变量作用域 - 内部能访问外部* 作者:gxf* 日期:2023年03月01日*/
object Example15 {def main(args: Array[String]): Unit = {val message = "欢迎访问醉美泸州~"if (true) {println(message)}}
}

在这里插入图片描述

  • 2、外部不能访问内部

在这里插入图片描述

相关文章:

scala内建控制结构

一、条件表达式 &#xff08;一&#xff09;语法格式 - if (条件) 值1 else 值2&#xff08;二&#xff09;执行情况 条件为真&#xff0c;结果是值1&#xff1b;条件为假&#xff0c;结果是值2。如果if和else的返回结果同为某种类型&#xff0c;那么条件表达式结果也是那种类…...

Linux SSH命令实战教程,提升你的服务器管理基本功!

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文是专栏【linux基本功-基础命令实战】的第62篇文章。 专栏地址&#xff1a;[linux基本功-基础命令专栏] &#xff0c; 此专栏是沐风晓月对Linux常用命令的汇总&#xff0c;希望能够加深自己的印象&am…...

【Python】Python进阶系列教程-- Python3 CGI编程(二)

文章目录 前言什么是CGI网页浏览CGI架构图Web服务器支持及配置第一个CGI程序HTTP头部CGI环境变量GET和POST方法使用GET方法传输数据简单的表单实例&#xff1a;GET方法使用POST方法传递数据通过CGI程序传递checkbox数据通过CGI程序传递Radio数据通过CGI程序传递 Textarea 数据通…...

do..while、while、for循环反汇编剖析

1、循环语句重要特征提取 循环语句最重要的特点就是执行的过程中会往上跳&#xff01;&#xff01;&#xff01; 箭头往上跳的一般都是循环语句&#xff0c;比如下面的for循环&#xff1a; 2、do..while语句反汇编 #include<iostream> using namespace std; #pragma …...

【代码随想录】刷题Day53

1.最长公共子序列 1143. 最长公共子序列 和之前的一道题目的区别就是这个子序列不需要每个字符相邻。那么条件就变成两种了&#xff0c;一种是当前的字符相同&#xff0c;一种是不同。相同跟之前的条件一样&#xff1b;不同则需要继承上次比较的较大值。if (text1[i - 1] tex…...

MySQL 索引及查询优化总结

一个简单的对比测试 前面的案例中&#xff0c;c2c_zwdb.t_file_count表只有一个自增id&#xff0c;FFileName字段未加索引的sql执行情况如下&#xff1a; 在上图中&#xff0c;typeall&#xff0c;keynull&#xff0c;rows33777。该sql未使用索引&#xff0c;是一个效率非常低…...

什么是AJAX?

AJAX是一种基于Web的技术&#xff0c;它允许Web应用程序在不刷新整个页面的情况下与服务器进行交互。通过AJAX&#xff0c;Web应用程序可以使用JavaScript向服务器发送异步请求并在不干扰用户的情况下更新页面的部分内容。 AJAX是Asynchronous JavaScript and XML的缩写。尽管…...

报表生成器FastReport .Net用户指南:显示数据列、HTML标签

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案&#xff0c;使用FastReport .NET可以创建独立于应用程序的.NET报表&#xff0c;同时FastReport .Net支持中文、英语等14种语言&#xff0c;可以让你的产品保证真正的国际性。 FastReport.NET官方版…...

bootstrap-dialog弹框,去掉遮盖层,可移动

1.去掉遮盖层的设置data-backdrop"false" <div class"modal fade" id"modal" aria-modal"true" role"dialog" data-backdrop"false" style"width:50%"><div class"modal-dialog modal-l…...

7. user-Agent破解反爬机制

文章目录 1. 为什么要设置反爬机制2. 服务器如何区分浏览器访问和爬虫访问3. 反爬虫机制4. User-Agent是什么5. 如何查询网页的User-Agent6. user-agent信息解析7. 爬虫程序user-agent和浏览器user-agent的区别8. 代码查看爬虫程序的user-agent9. 在代码中加入请求头信息 1. 为…...

3.Nginx+Tomcat负载均衡和动静分离群集

文章目录 NginxTomcat负载均衡和动静分离群集Nginx作用实验七层反向代理nginx动静分离四层反向代理负载均衡 NginxTomcat负载均衡和动静分离群集 Nginx是-款非常优秀的HTTP服务器软件 支持高达50 000个并发连接数的响应拥有强大的静态资源处理能力运行稳定内存、CPU等系统资源…...

数据结构与算法之树结构

目录 为什么要使用树结构树结构基本概念树的种类树的存储与表示常见的一些树的应用场景为什么要使用树结构 线性结构中不论是数组还是链表,他们都存在着诟病;比如查找某个数必须从头开始查,消耗较多的时间。使用树结构,在插入和查找的性能上相对都会比线性结构要好 树结构…...

【python】 用来将对象持久化的 pickle 模块

pickle 模块可以对一个 Python 对象的二进制进行序列化和反序列化。说白了&#xff0c;就是它能够实现任意对象与二进制直接的相互转化&#xff0c;也可以实现对象与文本之间的相互转化。 比如&#xff0c;我程序里有一个 python 对象&#xff0c;我想把它存到磁盘里&#xff…...

【博客654】prometheus配置抓取保护以防止压力过载

prometheus抓取保护配置以防止压力过载 场景 担心您的应用程序指标可能突然激增&#xff0c;以及指标突然激增导致prometheus压力过载 就像生活中的许多事情一样&#xff0c;标签要有节制。当带有用户 ID 或电子邮件地址的标签被添加到指标时&#xff0c;虽然它不太可能结束…...

Backtrader官方中文文档:第十三章Observers观察者

本文档参考backtrader官方文档,是官方文档的完整中文翻译,可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。 本章包含 backtrader 官方Observers章节全部内容,入口 : https://backtrader.com/docu/observers-and-sta…...

算法leetcode|54. 螺旋矩阵(rust重拳出击)

文章目录 54. 螺旋矩阵&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a;每次循环移动一步&#xff1a;每次循环完成一个顺时针&#xff1a…...

单容水箱建模(自衡单容水箱+无自衡单容水箱)

自衡单容水箱Simulink建模和PLC源代码请参看下面文章链接: 单容双容水箱建模(simulink仿真+PLC代码)_RXXW_Dor的博客-CSDN博客PLC通过伯努利方程近似计算水箱流量详细内容请参看下面的文章博客PLC通过伯努利方程近似计算水箱流量(FC)_怎么用伯努利方程求某水位流量_RXXW_Dor的…...

分享Python7个爬虫小案例(附源码)

本次的7个python爬虫小案例涉及到了re正则、xpath、beautiful soup、selenium等知识点&#xff0c;非常适合刚入门python爬虫的小伙伴参考学习。注&#xff1a;若涉及到版权或隐私问题&#xff0c;请及时联系我删除即可。 1.使用正则表达式和文件操作爬取并保存“某吧”某帖子…...

我用ChatGPT写2023高考语文作文(一):全国甲卷

2023年 全国甲卷 适用地区&#xff1a;广西、贵州、四川、西藏 人们因技术发展得以更好地掌控时间&#xff0c;但也有人因此成了时间的仆人。 这句话引发了你怎样的联想与思考&#xff1f;请写一篇文章。 要求&#xff1a;选准角度&#xff0c;确定立意&#xff0c;明确文体&am…...

c++ modbusTCP

//Modbus TCP是一种基于TCP/IP协议的Modbus协议&#xff0c;它允许Modbus协议通过以太网进行通信。 //在C中&#xff0c;可以使用第三方库来实现Modbus TCP通信&#xff0c;例如libmodbus和QModbus。 //使用libmodbus库实现Modbus TCP通信的示例代码如下&#xff1a; //c #incl…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...