scala内建控制结构

news2025/2/27 1:40:19

一、条件表达式

(一)语法格式

 - if (条件)1 else2

(二)执行情况

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

(三)案例演示

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

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

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

  • 打开Scala项目ScalaDemo,创建net.huawei.day02包,在包里创建Example01对象
package net.gxf.day02

import scala.io.StdIn

/**
 * 功能:判断奇偶性
 */

object Example01 {
  def main(args: Array[String]): Unit = {
    print("n = ")
    val n = StdIn.readLine.toInt
   val result =  if (n % 2 == 0)
      n.toString + "是偶数~"
    else
      n.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) + sep
    list.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 = 0
    var i = 1
    while (i <= 100) {
      sum = sum + i
      i = 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.day02

import scala.io.StdIn

/**
 * 功能:判断奇偶性
 */

object Example01 {
  def main(args: Array[String]): Unit = {
    print("n = ")
    val n = StdIn.readLine.toInt
   val result =  if (n % 2 == 0)
      n.toString + "是偶数~"
    else
      n.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 = 0
    var i = 1
    do {
      sum = sum + i
      i = 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.day02

import scala.io.StdIn

/**
 * 功能:判断奇偶性
 */

object Example01 {
  def main(args: Array[String]): Unit = {
    print("n = ")
    val n = StdIn.readLine.toInt
   val result =  if (n % 2 == 0)
      n.toString + "是偶数~"
    else
      n.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、外部不能访问内部

在这里插入图片描述

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

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

相关文章

Vue.js 中的 props 和 $emit 方法有什么关系?

Vue.js 中的 props 和 $emit 方法有什么关系&#xff1f; 在 Vue.js 中&#xff0c;props 和 $emit 方法是两个常用的概念。它们可以帮助开发者更方便地实现组件之间的通信。但是这两个概念有什么关系呢&#xff1f;本文将会详细介绍 Vue.js 中的 props 和 $emit 方法&#xf…

【LeetCode每日一题】——1475.商品折扣后的最终价格

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 栈 二【题目难度】 简单 三【题目编号】 1475.商品折扣后的最终价格 四【题目描述】 给你一…

【区块链 | EVM】深入理解学习EVM - 深入了解 Solidity:堆栈

探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 原文链接: https://betterprogramming.pub/solidity-tutorial-all-about-stack-c1ec6070fe60探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 图片来源:Iva Rajović on Unsplash 这是"深入Solidity数据存储位置…

A股月份效应 | Python量化A股市场魔咒,5穷6绝7翻身准确吗?| 邢不行

A股有很多广为流传的谚语&#xff0c;它们大多源于投资者对交易经验的总结和共识。 比如我们之前验证过的散户反买别墅靠海、跳空必回补等谚语。 今天我们要验证的&#xff0c;是五穷六绝七翻身这句谚语。 它的意思是A股在5月、6月可能会跌的很惨&#xff0c;到7月会开始反弹回…

浅谈倾斜摄影三维模型数据裁剪的应用场景

浅谈倾斜摄影三维模型数据裁剪的应用场景 倾斜摄影三维模型数据裁剪是将倾斜摄影三维模型数据中不需要的部分删除或隐藏的过程&#xff0c;可以提高数据处理效率和准确性。倾斜摄影三维模型数据裁剪广泛应用于建筑、城市规划、地质勘探、环境监测等领域。本文将介绍倾斜摄影三维…

基于Springboot+Vue的计算机房管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 计算机房管理系统在现…

读取所在点的像素值

由于项目需求&#xff0c;需要用到开源的软件开发&#xff0c;就开始研究GDAL&#xff0c;这个开源库&#xff0c;目前来说&#xff0c;调用GDAL库&#xff0c;最方便的语言还是python &#xff0c;简单记录下&#xff0c;用python语言做GDAL开发的一些东西吧。一个在开发中经常…

​浅谈Vue3响应式原理与源码解读

一. 了解几个概念 什么是响应式 在开始响应式原理与源码解析之前&#xff0c;需要先了解一下什么是响应式&#xff1f;首先明确一个概念&#xff1a;响应式是一个过程&#xff0c;它有两个参与方&#xff1a; 触发方&#xff1a;数据响应方&#xff1a;引用数据的函数 当数据发…

微信小程序原生开发功能合集十八:系统主题及自定义主题功能实现

本章实现系统主题监听及相应处理,包括暗黑色、亮色等。并实现自定义主题控制相关功能,可通过菜单进行主题的切换。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: ht…

VUE 实现滑块验证 ①

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; 微信小程序 &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f4…

2023年6月DAMA-CDGP数据治理专家认证,来这里

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

Windows批处理文件倒计时且循环执行文件/程序

Windows批处理文件倒计时且循环执行文件/程序&#xff1a; 最近想循环测试下语音唤醒设备&#xff0c;所以需要用bat文件在Windows上一直循环播放指定的mp3文件&#xff0c;且设置了间隔时间&#xff0c;也就是倒计时时间&#xff0c;最后网上查了一堆之后整理了一个bat&#x…

微信小程序开发中遇到的坑

目录 1、clearInterval不起作用 2、设置background: linear-gradient(180deg, #FCF8F5 0%, #FCF8F5 99.9%, transparent 100%);解决元素底部有黑线的问题。但是在ios中不起作用。 3、wx.createAnimation&#xff0c;设置的动画只能执行一次 4、swiper在苹果手机上显示不全&…

C#,码海拾贝(33)——约化“一般实矩阵”为“赫申伯格矩阵”的“初等相似变换法”之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 矩阵类 /// 作者&#xff1a;周长发 /// 改进&#xff1a;深度混淆 /// https://blog.csdn.net/beijinghorn /// </summary> public partial class Matrix {…

【React】脚手架,组件化开发,类组件/函数式组件,声明周期,组件的嵌套,子父传递,插槽,Context,事件总线,setState原理

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 脚手架目录结构组件化开发类组件函数式组件 声明周期组件的嵌套组件之间的通信插槽 Context事件…

vscode实现代码片段快捷输入设置

1.编写想要的代码片段 <template> <div>AppContent</div> </template> <script> export default { } </script> <style scoped> </style> 2.打开网站:snippet generator 如下图添加描述,快捷键和代码片段.右边会有生成内容 …

93.构建样品餐部分第一节

之前我们实现得页面是这个样子的 现在让我们来完成剩下的样品餐部分吧&#xff01; ● 大致实现的页面是这样的 ● 让我们先简单的生成这些框架 <section class"section-meals"><div class"container"><span class"subheading&qu…

SpringCloud Alibaba Seata配置到Nacos

SpringCloud Alibaba Seata 1 Seata 简介 单体应用被拆分成微服务应用&#xff0c;原来的三个模块被拆分成三个独立的应用&#xff0c;分别使用 三个独立的数据源业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保 证但是全局的数据—致性问题没法…

H5嵌入原生开发小结----兼容安卓与ios的填坑之路

一开始听说开发H5&#xff0c;以为就是做适配现代浏览器的移动网页&#xff0c;心想不用管IE了&#xff0c;欧也。到今天&#xff0c;发现当初too young too simple&#xff0c;兼容IE和兼容安卓与IOS&#xff0c;后者让你更抓狂。接下来数一下踩过的坑。主要分UI展示&#xff…

如何借助AI,产品文案语音配图片一键生成视频

const name "AI生成视频";console.log(name); 以前我们做视频都是要找素材、剪辑、配音&#xff0c;太费时间了&#x1f629;&#xff0c;现在只需要通过AI&#xff0c;输入文字&#xff0c;它就能自动帮我们生成一段有声有色的视频。 我们来看看文本生成的视频效…